سؤال

وأنا أعمل مع 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top