استيراد قاعدة البيانات القديمة إلى أحدث إصدار

س: إذا كان لديك قاعدة بيانات قديمة من تثبيت Discourse، الإصدار 2.0 > تصدير - استيراد > 2.9 - هل ستفشل أم أن هناك عملية تحويل مدمجة في الاستيراد للسماح بالاستيراد الناجح؟

أ: تحديث PostgreSQL 13

شكرًا، يبدو أن هذا يعمل، باستثناء فشل الآن في تهيئة التطبيق عند إعادة بنائه.
يبدو أن هناك خطأ “قاعدة بيانات discourse موجودة بالفعل: خطأ في النوع” بالإضافة إلى خطأ ruby/gems في تحذير التهيئة.

لقد قرأت بعض الأخطاء.

للسياق، هذا الإصدار 2.2b4 (PG10) هو إعداد الاستيراد الأصلي والبناء المستخدم للاستيراد من منصة منتدى قديمة أخرى - لم يتم إجراء أي تحديثات أو تغييرات عليه منذ ذلك الحين على حد علمي.

انطباعي هو أن الحل قد يكون التعليق على بعض الأسطر في مكان ما والتي تستخدم فقط للهجرة/الاستيراد الأصلي - أين تجد عادةً مثل هذه التخصيصات لإصدار معين؟

ملاحظة: لقد قمت بالفعل بإزالة أو التعليق على - الإضافات، شهادة “lets encrypt”، وخطوط الإصدار 2.2b4 من ملف app.yml.

ستحتاج إلى تضمين ملفك للحصول على مساعدة حقيقية. إذا رأيت أشياء مثل

  apt get

أو شيء عن تعديل Gemfile، فهذه أشياء يجب إزالتها.

ما سأفعله على الأرجح = بالنظر إلى أن ترقية قاعدة البيانات نجحت) هو إعادة تسمية ملف app.yml الخاص بك وتشغيل discourse-setup (بافتراض أن ملفك الحالي يحتوي على بياناته في shared/standalone. يمكنك فقط مقارنة ملفك بـ samples/standalone.yml.

شكرًا على النصائح. سأجرب rm app.yml وأرى ما سيحدث.

عندما تقول ملف، هل تقصد أخطاء في terminal أو app.yml أو ملف مختلف؟

معلومات إضافية - أنا أقوم بتشغيل قطرة للتعلم وحل الألغاز حتى أفهم بشكل أفضل كيفية الصيانة مع ميزة راحة البال عند التدمير. أي، لم أقم بتشغيل هذا على منتدى مباشر وقمت بتدميره؛)

عندما ابتعدت عن العمل بالأمس، خطر ببالي أنه يجب علي بالطبع الاطلاع على تعليمات المستورد وفهم كيفية إعدادها ومعرفة ما إذا كان هناك أي بقايا، ولكن اقتراحك بخصوص app.yml يتجاوز مثل هذه المنحنيات. :sweat_smile:

حسناً، جربت كل ذلك - قمت بتشغيل droplet جديد،

  • :white_check_mark: تحديث نظام التشغيل/Docker
  • :white_check_mark: إيقاف الحاوية
  • :white_check_mark: حذف app.yml
  • :white_check_mark: discourse-setup = ترقية PG10
  • :x: إعادة البناء فشلت في التمهيد (تبدو مطابقة لرسائل الأخطاء من الأمس.)

الأخطاء التي يمكنني رؤيتها:

1) خطأ: قاعدة البيانات “discourse” موجودة بالفعل

2022-05-20 10:35:29.889 UTC [42] LOG: نظام قاعدة البيانات جاهز لقبول الاتصالات
I, [2022-05-20T10:35:34.789986 #1] INFO – :
I, [2022-05-20T10:35:34.790259 #1] INFO – : > su postgres -c ‘createdb discourse’ || true
2022-05-20 10:35:34.839 UTC [55] postgres@postgres ERROR: قاعدة البيانات “discourse” موجودة بالفعل
2022-05-20 10:35:34.839 UTC [55] postgres@postgres STATEMENT: CREATE DATABASE discourse;
createdb: خطأ: فشل إنشاء قاعدة البيانات: خطأ: قاعدة البيانات “discourse” موجودة بالفعل

2) “index_poll_options_on_poll_id_and_digest”

I, [2022-05-20T10:29:54.464874 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'

2022-05-20 10:29:58.275 UTC [664] discourse@discourse ERROR: قيمة المفتاح المكررة تنتهك قيد الفريد **"index_poll_options_on_poll_id_and_digest"**

2022-05-20 10:29:58.275 UTC [664] discourse@discourse DETAIL: المفتاح (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) موجود بالفعل.

2022-05-20 10:29:58.275 UTC [664] discourse@discourse STATEMENT: INSERT INTO poll_options

(poll_id, digest, html, anonymous_votes, created_at, updated_at)

VALUES

(163, 'e8b71c653ce9b67fbfdeb23956415a45', '&lt;2%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '19aab1c9ed0e7bf7aff0dc154f3f349a', '3%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, 'ba429f197b4f9f3ce89f4e1fb2e8b009', '4%', 1, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '30eb71c6082b75ca751c3d4e94aa386c', '5%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '7575912ab29a386e8f6797e280aca664', '6%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '17950b1d5d660a2e8a078640be0def0a', '7%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '1c4e675eb7d2d561f16d1afce8330816', '8%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, 'a891f2abb4531189affefe9896df814e', '9%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, 'd7d8f9a60fc4dc25f2e6a986b12e5176', '10%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '3d5e680f80b95ddbf99490991327349a', '11%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '84b9c1be0d88b6592595e6e16827dbc1', '12%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '84b9c1be0d88b6592595e6e16827dbc1', '<blockquote>

<p>12%</p>

</blockquote>', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC')

RETURNING digest, id

rake aborted!

StandardError: حدث خطأ، تم إلغاء هذا الانتقال وجميع الانتقالات اللاحقة:

ERROR: قيمة المفتاح المكررة تنتهك قيد الفريد "index_poll_options_on_poll_id_and_digest"

DETAIL: المفتاح (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) موجود بالفعل.

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `exec'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `async_exec'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/postgres/connection.rb:209:in `run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `block in run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `block in with_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `with_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/postgres/connection.rb:64:in `query_single'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:131:in `block (2 levels) in up'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:87:in `each'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:87:in `block in up'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:64:in `each'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:64:in `up'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:873:in `public_send'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:873:in `exec_migration'

/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'

/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:854:in `block (2 levels) in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:853:in `block in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:852:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1046:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1360:in `block in execute_migration_in_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:316:in `transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/transactions.rb:209:in `transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1411:in `ddl_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1359:in `execute_migration_in_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1333:in `each'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1333:in `migrate_without_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1282:in `block in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1432:in `block in with_advisory_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1447:in `with_advisory_lock_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1428:in `with_advisory_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1282:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1117:in `up'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1092:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/tasks/database_tasks.rb:262:in `migrate'

/var/www/discourse/lib/tasks/db.rake:227:in `block (2 levels) in <main>'

/var/www/discourse/lib/distributed_mutex.rb:33:in `block in synchronize'

/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'

/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'

/var/www/discourse/lib/distributed_mutex.rb:14:in `synchronize'

/var/www/discourse/lib/tasks/db.rake:210:in `block in <main>'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'

/usr/local/bin/bundle:25:in `load'

/usr/local/bin/bundle:25:in `<main>'

Caused by:

PG::UniqueViolation: ERROR: قيمة المفتاح المكررة تنتهك قيد الفريد "index_poll_options_on_poll_id_and_digest"

DETAIL: المفتاح (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) موجود بالفعل.

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `exec'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `async_exec'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/postgres/connection.rb:209:in `run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `block in run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `block in with_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `with_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/postgres/connection.rb:64:in `query_single'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:131:in `block (2 levels) in up'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:87:in `each'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:87:in `block in up'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:64:in `each'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:64:in `up'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:873:in `public_send'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:873:in `exec_migration'

/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'

/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:854:in `block (2 levels) in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:853:in `block in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:852:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1046:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1360:in `block in execute_migration_in_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:316:in `transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/transactions.rb:209:in `transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1411:in `ddl_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1359:in `execute_migration_in_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1333:in `each'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1333:in `migrate_without_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1282:in `block in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1432:in `block in with_advisory_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1447:in `with_advisory_lock_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1428:in `with_advisory_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1282:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1117:in `up'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1092:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/tasks/database_tasks.rb:262:in `migrate'

/var/www/discourse/lib/tasks/db.rake:227:in `block (2 levels) in <main>'

/var/www/discourse/lib/distributed_mutex.rb:33:in `block in synchronize'

/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'

/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'

/var/www/discourse/lib/distributed_mutex.rb:14:in `synchronize'

/var/www/discourse/lib/tasks/db.rake:210:in `block in <main>'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'

/usr/local/bin/bundle:25:in `load'

/usr/local/bin/bundle:25:in `<main>'

Tasks: TOP => db:migrate

(راجع التتبع الكامل بتشغيل المهمة مع --trace)

I, [2022-05-20T10:29:58.305849 #1] INFO -- : == 20180820073549 CreatePollsTables: migrating ================================

-- create_table(:polls, {})

-> 0.0172s

-- add_index(:polls, [:post_id, :name], {:unique=>true})

-> 0.0016s

-- create_table(:poll_options, {})

-> 0.0064s

-- add_index(:poll_options, [:poll_id, :digest], {:unique=>true})

-> 0.0018s

-- create_table(:poll_votes, {:id=>false})

-> 0.0067s

-- add_index(:poll_votes, [:poll_id, :poll_option_id, :user_id], {:unique=>true})

-> 0.0013s

== 20180820073549 CreatePollsTables: migrated (0.0376s) =======================

نهاية

I, [2022-05-20T10:29:58.308710 #1] INFO – : إنهاء العمليات غير المتزامنة

I, [2022-05-20T10:29:58.308759 #1] INFO – : إرسال INT إلى HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 42

I, [2022-05-20T10:29:58.308837 #1] INFO – : إرسال TERM إلى exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 103

2022-05-20 10:29:58.308 UTC [42] LOG: تم استلام طلب إغلاق سريع

103:signal-handler (1653042598) تم استلام SIGTERM وجدولة الإغلاق…

103:M 20 May 2022 10:29:58.310 # تم طلب الإغلاق من قبل المستخدم…

103:M 20 May 2022 10:29:58.310 * حفظ لقطة RDB النهائية قبل الخروج.

2022-05-20 10:29:58.310 UTC [42] LOG: إلغاء أي معاملات نشطة

2022-05-20 10:29:58.312 UTC [42] LOG: عامل الخلفية “logical replication launcher” (PID 51) خرج برمز الخروج 1

2022-05-20 10:29:58.312 UTC [46] LOG: جاري الإغلاق

2022-05-20 10:29:58.392 UTC [42] LOG: تم إيقاف نظام قاعدة البيانات

103:M 20 May 2022 10:29:58.601 * تم حفظ قاعدة البيانات على القرص

103:M 20 May 2022 10:29:58.602 # Redis جاهز الآن للخروج، وداعاً…

FAILED


Pups::ExecError: cd /var/www/discourse && su discourse -c ‘bundle exec rake db:migrate’ فشل مع رمز العودة #<Process::Status: pid 650 exit 1>

موقع الفشل: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’

فشل التنفيذ مع المعلمات {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}

فشل التمهيد برمز الخروج 1

**** فشل التمهيد ** يرجى التمرير للأعلى والبحث عن رسائل الأخطاء السابقة، قد يكون هناك أكثر من واحدة.**

قد يساعد ./discourse-doctor في تشخيص المشكلة.

لقد شغلت discourse-doctor عدة مرات بما في ذلك هذه المرة ولم يظهر أي شيء أستطيع رؤيته

في هذه الحالة، قم فقط بإجراء تثبيت جديد، وقم بعمل نسخة احتياطية للموقع القديم، وقم باستعادته إلى الموقع الجديد.

ها ها، كان ذلك نوعًا من توجيهي الأصلي.

إذا كان الأمر بهذه البساطة، فستُحل جميع مشاكلي.

انظر، كان قلقي هو أنني سأقوم بالتصدير من PG10 إلى 2.9 الجديد اللامع، وهو PG13، أليس كذلك، وبالتالي هل سيستوعب قاعدة البيانات - افتراضي هو لا.

وبالتالي في سيناريو النسخ الاحتياطي والاستعادة، في هذا السياق - هل يكفي التصدير/الاستيراد الإداري دون ترقية قاعدة البيانات القديمة أولاً كما كنت أحاول؟

نعم، ولك قد تحتاج إلى إصلاح مشكلة في قاعدة بياناتك الحالية قبل أن تتمكن من استعادتها على 2.9.

إليك حل قد ينجح، ولكن ستحتاج إلى استخدام %84b9c1be0d88b6592595e6e16827dbc1% كـ value لأن هذا هو معرف الاستطلاع الذي يسبب مشاكل في حالتك.

إذًا يبدو أن لديك فهرسًا تالفًا؟ (لم ألاحظ ذلك ولكن هذا ما يوحي به الرد الأخير).
إذا كانت هذه هي الحالة، فيمكنك البحث عن بعض الأمثلة. في الغالب، تحاول إعادة الفهرسة ومعرفة الفهارس التي لن تتم إعادة بنائها، ثم تحذف (أو تصلح إذا كنت ذكيًا) السجلات المارقة.

شكراً لك، بدا الأمر واعداً، لكنه توقف عند معرف + قيمة استطلاع جديد بعد تطبيق بعض تلك الخطوات العلاجية.

بينما قد تكون هذه هي المشكلة وقد تكون الحل - أعتقد أن جميع الاستطلاعات ستسبب توقفاً أو الكثير منها، وليس واحداً فقط، وأنا أستند أيضاً إلى تصريح فالكو في الموضوع الآخر:

هذا ليس فهرساً تالفاً.

بين الإصدارين 2.1 و 2.5، نقلنا الاستطلاعات من PluginStore إلى جداول مناسبة. أحد أسباب النقل هو ضمان اتساق البيانات، وهو بالضبط المشكلة التي تواجهها.

لديك قيمة مكررة في جدول poll_options. هل يمكنك الذهاب إلى هناك وحذف الإدخالات المكررة؟

يلزم إجراء مزيد من التحقيق الدقيق.

مرحباً بالجميع،

أنا في نفس القارب مع @agemo، وأحصل على نفس الخطأ تمامًا، وأنا ماهر في التعامل مع قاعدة البيانات مباشرة.

هذا ما لا أفهمه. الحل المقترح هو ببساطة حذف استطلاعات الرأي ذات المعرف المكرر في عمود القيمة، ولكن عندما تحققت من جدولي، تبين أن هذه الإدخالات المكررة كلها تشير إلى post_id مختلف، وبالتالي تنتمي إلى مشاركات مختلفة، ولديها أيضًا بيانات وصفية مختلفة مثل عدد الأصوات وما إلى ذلك.

هل يمكن لشخص ما أن يشرح لي الهيكل القديم مقابل الهيكل الجديد حتى أتمكن من فهم هذا الخطأ. بالنسبة لي، حذف استطلاعات الرأي لا يحل المشكلة لأنني في الواقع أحذف بيانات المستخدمين.

شكرا!

يبدو لي أن هذا فهرس تالف. هل يمكنك إعادة فهرسة هذا الجدول؟

أو ربما تغير شيء ما ويتطلب ترحيلًا أكثر تعقيدًا. أو أن الترحيل معطل بطريقة ما.

مرحباً @pfaffman، يسعدني رؤيتك مرة أخرى. لقد استخدمت خدمتك من قبل لموقع مختلف.

  1. يمكنني بالتأكيد إعادة بناء الفهرس على هذا الجدول، ولكن كيف سيساعد ذلك مع البيانات غير الفريدة؟ هل يمكنك توضيح لماذا تبدأ دائمًا بهذا؟ (لاحظت ذلك للتو في ردودك)

  2. تم الترحيل باستخدام الإصدار 2.2b4، وهو الإصدار الذي نجح فيه استيراد استطلاعات الرأي.

  3. هل أفهم بشكل صحيح أنه في الجدول القديم post_custom_fields، يشير القيمة → poll → options → id إلى الملخص وليس معرف الاستطلاع الفعلي؟

  4. ما هو ملخص الاستطلاع على أي حال؟

شكراً على ردك، ولكن مجرد إزالة الاستطلاعات ليس حلاً للسجلات المكررة. أفترض أن الاستيراد من phpbb3 في وقت مبكر كان غير صحيح وأنشأ تلك السجلات. إنها صالحة، ولكن لديها فقط معرفات UUID مكررة لأن المستورد الأصلي لم يتحقق من ذلك.

على أي حال، الحل لأي شخص يصادف هذه المشكلة هو القيام بما يلي:

  1. تغيير السجلات الإشكالية في جدول post_custom_fields لإزاحتها. من الأفضل القيام بذلك بدلاً من الانتظار لبضع دقائق لإعادة البناء لرؤية خطأ آخر.

update post_custom_fields set name = 'polls' where name = 'polls_bak';
update post_custom_fields set name = 'polls-votes' where name = 'polls-votes_bak';

  1. تشغيل إعادة بناء التطبيق، أو التحديث، أو أي شيء يحاول المستخدم القيام به.

  2. الاتصال بالحاوية قيد التشغيل مباشرة بعد بناء كل شيء وبدء تشغيله.

  3. تغيير الاستطلاعات مرة أخرى إلى التسمية الأصلية:

update post_custom_fields set name = 'polls'_bak' where name = 'polls';
update post_custom_fields set name = 'polls-votes_bak'' where name = 'polls-votes';

  1. تشغيل الترحيل الذي يسبب المشكلة يدوياً من داخل حاوية التطبيق، مع ملاحظة أن VERSION هو الرقم الموجود في اسم ملف الترحيل.

أولاً، قم بإلغاء تشغيل الترحيل، وهذا لن يفعل شيئاً لأن طريقة down لا تفعل شيئاً لقاعدة البيانات:

rake db:migrate:down VERSION=20180820080623

قم بتشغيل الترحيل وابحث عن الخطأ الأول:

rake db:migrate:up VERSION=20180820080623

  1. ابحث في الجدول باستخدام واجهة رسومية لقاعدة البيانات لتسهيل التحرير لمعرف UUID الذي يسبب المشكلة:

select from post_custom_fields where value like '%your_UUID%';

  1. الآن الجزء الصعب. معرف UUID هو معرف إجابة/خيار الاستطلاع، لذا ما عليك فعله هو تغيير معرف UUID هذا في الصف poll، على سبيل المثال من 731ef6901e968fc3f4e785fcb9e9abe8 إلى 731ef6901e968fc3f4e785fcb9e9abe9. من غير المرجح جداً أن تجد واحداً آخر مثله في نظامك. ولكن بعد القيام بذلك، تحتاج أيضاً إلى العثور على المعرف المقابل في poll-votes وتغييره إلى المعرف الجديد الخاص بك. بهذه الطريقة، لن تفقد أي أصوات أو إجابات.

  2. قم بتشغيل الترحيل مرة أخرى وابحث عن الخطأ التالي:

rake db:migrate:up VERSION=20180820080623

  1. كرر هذه العملية حتى يكتمل الترحيل وتكون قد نقلت جميع الاستطلاعات إلى جداولك الجديدة.

أنا مستاء من عدم قيام أي شخص بالرد حتى لشرح ما هو معرف UUID هذا وما يشير إليه. أعرف أنه مفتوح المصدر وأعرف أنه مرت سنوات منذ أن تم الالتزام به، أنا لا أشتكي ولكن بعض المساعدة من الأشخاص الذين يقومون فعلياً بالالتزام في المستودع الرسمي ستكون موضع تقدير كبير.

تم حل المشكلة، لذا أيام سعيدة.

شكراً!

عمل رائع هناك. :sunglasses: