لا يوجد ميزانية لهذا. لكن… ربما.
هل رأى أي شخص هذه المشكلة عند تشغيل سكريبت الاستيراد؟
معالجة المنشورات بعد الانتهاء…
37785 / 48843 ( 77.4%) تم إنهاء العملية*
تم إنهاء العملية قبل إكمالها. عندما أقوم بتحميل المنتديات، يبدو أن الرسائل المستوردة موجودة، لكنني قلق من أنها لم تكتمل بسلاسة وقد تكون هناك مشاكل.
هل هناك أي توصيات؟ ربما خطأ في نقص الذاكرة؟ هل يمكنني ببساطة إعادة تشغيل السكريبت لاستكمال ما تم إيقافه أم أنه سيحاول إعادة استيراد بيانات مكررة؟ شكرًا لكم.
أعد تشغيل السكربت. لن يتم تكرار البيانات.
شكرًا لك، @pfaffman! هذا عمل بشكل ممتاز.
مرحباً،
أولاً، شكرًا جزيلًا على هذا الدليل الرائع. أقدر العمل الذي بُذل في هذا.
بخصوص مشكلتي:
أواجه صعوبة في الاتصال بقاعدة البيانات عند تشغيل سكريبت الاستيراد، رغم أنني أستخدم MariaDB لاستضافة نسخة احتياطية من vBulletin بدلاً من MySQL. لقد تأكدت من تشغيل MariaDB، وأستطيع استيراد نسخة احتياطية من vBulletin إليها، وقد راجعت اسم المستخدم واسم المضيف وكلمة المرور في السكريبت أربع مرات، لكن دون جدوى.
أشعر أنني أغفلت شيئًا بسيطًا، وإذا أمكن لأحد أن يرشدني إلى الاتجاه الصحيح، فسيكون ذلك مفيدًا جدًا.
أستخدم الإصدارات التالية:
mysql2 0.5.2
mariadb-server-10.3
discourse master git commit cb8fa46
التفاصيل الكاملة أدناه
عند محاولة تشغيل الأمر التالي:
apt-get update && apt-get install libmysqlclient-dev mysql-server-5.7
أحصل على خطأ:
E: Package 'libmysqlclient-dev' has no installation candidate
E: Package 'mysql-server-5.7' has no installation candidate
وهو أمر مفهوم، ربما تم إزالة هذه الحزم من المستودع منذ ذلك الحين.
لذلك، بدلاً من ذلك، أقوم بتشغيل:
apt-get update && apt-get install mariadb-server-10.3 libmariadbd-dev
يعمل MariaDB كبديل مباشر وهو أمر رائع لأن جميع الخطوات تعمل حتى أحاول تشغيل سكريبت الترحيل، وعندها أحصل على الخطأ التالي:
root@discourse:/src# su discourse -c 'bundle exec ruby script/import_scripts/vbulletin.rb'
root:@localhost wants vb4
Loading existing groups...
Loading existing users...
Loading existing categories...
Loading existing posts...
Loading existing topics...
==================================================
Access denied for user 'root'@'localhost'
Cannot connect in to database.
Hostname: localhost
Username: root
Password:
database: vb4
Edit the script or set these environment variables:
export DB_HOST="localhost"
export DB_NAME="vbulletin"
export DB_PW=""
export DB_USER="root"
export TABLE_PREFIX="vb_"
export ATTACHMENT_DIR '/path/to/your/attachment/folder'
Exiting.
بالنسبة للأذونات:
root@discourse:/src# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 59
Server version: 10.3.17-MariaDB-0+deb10u1 Debian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show grants;
+------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION |
+------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)
لقد راجعت اسم المستخدم وكلمة المرور عدة مرات، وحتى قمت بضبطهما يدويًا بنفسي.
لقد قمت بمزيد من البحث ووجدت أن تغيير الصورة الأساسية من Ubuntu 16.04 إلى Debian هو بالتأكيد السبب وراء عدم توفر MySQL، لكنني لا يزالُ محيرًا بشأن كيفية جعل mysql2 يتصل بـ MariaDB.
لقد قدمت طلب سحب (PR) منذ فترة يجعل ملف mysql-dep.template.yml يستخدم MariaDB. لقد استخدمته عدة مرات.
يبدو أنك تحاول عدم استخدام كلمة مرور؟ أنصحك باستخدام كلمة مرور. يفترض النص البرمجي وجود كلمة مرور.
حسناً، سأحاول تعيين كلمة مرور ورؤية ما إذا كان ذلك سيعمل. لكن مما فهمته، يجب أن يعمل سكريبت الاستيراد مع MariaDB. إذا كان الأمر كذلك، سأواصل استكشاف الأخطاء وإصلاحها. شكرًا لك على المساعدة السريعة!
@pfaffman هذا هو بالضبط! شكرًا جزيلاً لك. بمجرد أن أرتب منتداي، يمكنني إرسال طلب دمج (PR) لإصدار VB3 كان لدي، في حال كان مفيدًا لأحد.
هذا أيضًا مثالي للاختبار، لذا لا بأس بنشر التفاصيل، حيث سيتم هدمه قريبًا ![]()
شكرًا لكم جميعًا على المساعدة، لقد سارت عملية الترحيل بشكل جيد إلى حد كبير. كانت هناك بعض المرفقات المفقودة هنا وهناك، لكن بشكل عام سارت الأمور بشكل رائع.
بالنسبة لمن يقرأون هذا في المستقبل، فقد قمت بالترحيل من Vb3.8.7.
كان علي إجراء بعض التعديلات على استعلام SQL في ملف vbulletin.rb، حيث لم يتطابق هيكل قاعدة البيانات الخاص بي تمامًا مع السكربت، لكنه كان قريبًا جدًا. قررت التخلي عن التسميات التوضيحية المخصصة لضمان سير الأمور بسلاسة.
فرق GitHub: File fix other by canyon289 · Pull Request #1 · canyon289/discourse · GitHub
للتثبيت الخاص بـ MariaDB الذي يحل محل MySQL، استخدمت الأمر التالي:
apt-get update && apt-get install mariadb-server-10.3 libmariadbd-dev
ولتغيير كلمة مرور MariaDB من فارغة إلى قيمة محددة، كان هذا الرابط هو الأكثر شمولاً:
مرة أخرى، لا يمكنني شكر الأشخاص في هذا الموضوع بما يكفي، وكذلك جميع المساهمين في Discourse على الكود والمساعدة!
لقد انتهيت للتو من عملية هجرة، وقد تم تعيين فئة موروثة من نسخة vBulletin 4 لجميع الموضوعات التي تزيد عن 2000 موضوع. لا يسمح لي بحذف هذه الفئة وإعادة تعيين جميع المنشورات المحولة إلى عدم تحديد أي فئة. “لا يمكن حذف هذه الفئة لأنها تحتوي على 2322 موضوعًا”
هل توجد طريقة بديلة لحل هذه المشكلة؟
إما إعادة الترحيل أو تغيير الفئة في تلك المواضيع. مع هذا العدد الكبير، ستحتاج إلى القيام بذلك من سطر أوامر Ruby.
مرحبًا،
أنا غير متأكد من سياق هذا.
انسخ المرفقات إلى مثيل Discourse الخاص بك (للتحقق من المسار، راجع إعدادات VB4).
هل يمكن لأي شخص مساعدتي من فضلك؟
مرحبًا،
لاحظت وجود سكريبت vBulletin 5، لكنني لم أجد أي تعليقات حوله. هل تنطبق المعلومات الواردة في هذا الموضوع عليه أيضًا؟
شكرًا لك!
يجب أن يعمل السكربت بطريقة مماثلة جدًا.
جاري تنفيذ استيراد لتثبيت vB4، لكنه يفشل عند استيراد الفئات الفرعية. تحمّل معي فأنا مبتدئ في Rails/Ruby.
Traceback (most recent call last):
20: from script/import_scripts/vbulletin.rb:943:in `<main>'
19: from /home/vagrant/discourse/script/import_scripts/base.rb:47:in `perform'
18: from script/import_scripts/vbulletin.rb:84:in `execute'
17: from script/import_scripts/vbulletin.rb:293:in `import_categories'
16: from /home/vagrant/discourse/script/import_scripts/base.rb:403:in `create_categories'
15: from /home/vagrant/discourse/script/import_scripts/base.rb:403:in `each'
14: from /home/vagrant/discourse/script/import_scripts/base.rb:422:in `block in create_categories'
13: from /home/vagrant/discourse/script/import_scripts/base.rb:454:in `create_category'
12: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/suppressor.rb:48:in `save!'
11: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:319:in `save!'
10: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
9: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:212:in `transaction'
8: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `transaction'
7: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
6: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
5: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
4: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `block in transaction'
3: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
2: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:319:in `block in save!'
1: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/validations.rb:53:in `save!'
/home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/validations.rb:81:in `raise_validation_error': Validation failed: Slug is invalid (ActiveRecord::RecordInvalid)
أضفت بعض مخرجات التصحيح لحل المشكلة. قيمة slug في الفئة هي nil.
يبدو أن الفئة صالحة عند التكرار عبر create_categories(children_categories) do |category|. قمت أيضًا بتسجيل opts و import_id و new_category (فورًا قبل .save!) من def create_category في base.rb. يبدو أن كل شيء صالح وفقًا لما تتوقعه الدوال.
هل واجه أحدكم هذا من قبل؟
37 / 53 ( 69.8%) [345139 items/min]
category:
{"forumid"=>355, "title"=>"News", "description"=>"RSS Feed", "displayorder"=>6, "parentid"=>205}
Entering create_category...
opts:
{:id=>355, :name=>"News", :position=>6, :description=>"RSS Feed", :parent_category_id=>6}
import_id:
355
new_category:
#<Category id: nil, name: "News", color: "BF1E2E", topic_id: nil, topic_count: 0, created_at: nil, updated_at: nil, user_id: -1, topics_year: 0, topics_month: 0, topics_week: 0, slug: nil, description: nil, text_color: "FFF", read_restricted: false, auto_close_hours: nil, post_count: 0, latest_post_id: nil, latest_topic_id: nil, position: 6, parent_category_id: 6, posts_year: 0, posts_month: 0, posts_week: 0, email_in: nil, email_in_allow_strangers: false, topics_day: 0, posts_day: 0, allow_badges: true, name_lower: nil, auto_close_based_on_last_post: false, topic_template: nil, contains_messages: nil, sort_order: nil, sort_ascending: nil, uploaded_logo_id: nil, uploaded_background_id: nil, topic_featured_link_allowed: true, all_topics_wiki: false, show_subcategory_list: false, num_featured_topics: 3, default_view: nil, subcategory_list_style: "rows_with_featured_topics", default_top_period: "all", mailinglist_mirror: false, minimum_required_tags: 0, navigate_to_first_post_after_read: false, search_priority: 0, allow_global_tags: false, reviewable_by_group_id: nil, required_tag_group_id: nil, min_tags_from_required_group: 1>
Traceback (most recent call last):
لقد جرب مطورنا السكربت لكنه لم يتمكن من التقدم كثيرًا. هل هناك من مهتم بالقيام بذلك نيابة عنا على أساس استشاري؟
بالتأكيد، من فضلك أرسل لي رسالة خاصة.
يرجى المسامحة على جهلي، لكن كيف يمكنني إرسال رسالة خاصة؟ لم أجدها واضحة. أو يمكنك مراسلتي مباشرة عبر البريد الإلكتروني على العنوان: abboud at cedrus dot com.
سؤال حول الاستيراد: تحتوي بعض المنشورات في منتدى vBulletin الخاص بنا على روابط لمنشورات أخرى في نفس المنتدى. هل يتم تحويل هذه الروابط عند الاستيراد؟ وإذا لم يحدث ذلك، فما الذي يحدث لها؟ هل يتم إزالتها؟
لا أتذكر ما إذا كانت الإصدار الحالي يعيد كتابتها. النص البرمجي الذي أملكه (والذي أعتزم تقديم طلب دمج له) يقوم بإصلاحها.


