اقتطاع ميدياويكي
سؤال
وأنا أعمل مع API ميدياويكي (مثل http://en.wikipedia.org /w/api.php ) وأود أن تكون قادرة على "اقتطاع" الجداول الخلية من أجل إعادة التثبيت المحلي مع الحفاظ على بعض الجداول (المستخدمين،؟ ...). ماذا سيكون الاستعلامات SQL؟
وأود أن أقول: tuncate كافة الجداول ولكن $ {PREFIX} _user وتحديث $ {PREFIX} _user وضع user_editcount = 0
وأية مسائل أخرى (أكثر أمنا) اقتراح؟
المحلول
تم نشر الإجابة الصحيحة على لائحة ميدياويكي البريدية: انظر <لأ href = "http://lists.wikimedia.org/pipermail/mediawiki-l/2009-October/032322.html" يختلط = "نوفولو noreferrer" > http://lists.wikimedia.org/pipermail/mediawiki-l/2009-October/032322.html
ووفقا لهذا المنصب، وربما هو موافق لاقتطاع user_newtalk
، page
، revision
، text
،
archive
، pagelinks
، templatelinks
، imagelinks
، categorylinks
، category
، externallinks
، langlinks
، hitcounter
، watchlist
، image
، oldimage
، filearchive
، recentchanges
، searchindex
، interwiki
، querycache
، objectcache
، log_search
، trackbacks
، job
، querycache_info
، redirect
، querycachetwo
، page_restrictions
، protected_titles
، page_props
، change_tags
، tag_summary
، valid_tag
، l10n_cache
.
في المزيد من الإصدارات الأخيرة، إضافة msg_resource
وmsg_resource_list
إلى تلك القائمة، ل اقتطاع رسالة ذات الصلة مخابئ .
وأيضا: تذكر لحذف الملفات الموجودة في مجلد الصور، إذا اقتطاع الجدول صورة. وإلا فإنها ستكون متزامنة، وقد يكون لديك مشكلة في تحميل بعض الصور.
نصائح أخرى
والقائمة الحصول على الجداول من قاعدة البيانات الخاصة بك:
echo "show tables;" | mysql -u user_name -p db_name > tables
وتحديد الجداول التي تريد اقتطاع، ثم إنشاء برنامج نصي SQL
TRUNCATE TABLE a;
TRUNCATE TABLE b;
update <prefix>user set user_editcount=0;
وثم تشغيله من خلال العميل:
mysql -u user_name -p database_name < truncate-all.sql