س: إذا كان لديك قاعدة بيانات قديمة من تثبيت Discourse، الإصدار 2.0 > تصدير - استيراد > 2.9 - هل ستفشل أم أن هناك عملية تحويل مدمجة في الاستيراد للسماح بالاستيراد الناجح؟
شكرًا، يبدو أن هذا يعمل، باستثناء فشل الآن في تهيئة التطبيق عند إعادة بنائه.
يبدو أن هناك خطأ “قاعدة بيانات 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 يتجاوز مثل هذه المنحنيات. ![]()
Ok, tried all that - spun up new droplet,
updates OS/Docker
stopped container
rm app.yml
discourse-setup = upgraded PG10
rebuild FAILED bootstrap (looks identical to yesterday’s error messages.)
The errors that I can see:
1) ERROR: database “discourse” already exists
2022-05-20 10:35:29.889 UTC [42] LOG: database system is ready to accept connections
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: database “discourse” already exists
2022-05-20 10:35:34.839 UTC [55] postgres@postgres STATEMENT: CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR: database “discourse” already exists
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: duplicate key value violates unique constraint **"index_poll_options_on_poll_id_and_digest"**
2022-05-20 10:29:58.275 UTC [664] discourse@discourse DETAIL: Key (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) already exists.
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', '<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: An error has occurred, this and all later migrations canceled:
ERROR: duplicate key value violates unique constraint "index_poll_options_on_poll_id_and_digest"
DETAIL: Key (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) already exists.
/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: duplicate key value violates unique constraint "index_poll_options_on_poll_id_and_digest"
DETAIL: Key (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) already exists.
/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
(See full trace by running task with --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) =======================
End
I, [2022-05-20T10:29:58.308710 #1] INFO – : Terminating async processes
I, [2022-05-20T10:29:58.308759 #1] INFO – : Sending INT to 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 – : Sending TERM to 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: received fast shutdown request
103:signal-handler (1653042598) Received SIGTERM scheduling shutdown…
103:M 20 May 2022 10:29:58.310 # User requested shutdown…
103:M 20 May 2022 10:29:58.310 * Saving the final RDB snapshot before exiting.
2022-05-20 10:29:58.310 UTC [42] LOG: aborting any active transactions
2022-05-20 10:29:58.312 UTC [42] LOG: background worker “logical replication launcher” (PID 51) exited with exit code 1
2022-05-20 10:29:58.312 UTC [46] LOG: shutting down
2022-05-20 10:29:58.392 UTC [42] LOG: database system is shut down
103:M 20 May 2022 10:29:58.601 * DB saved on disk
103:M 20 May 2022 10:29:58.602 # Redis is now ready to exit, bye bye…
FAILED
Pups::ExecError: cd /var/www/discourse && su discourse -c ‘bundle exec rake db:migrate’ failed with return #<Process::Status: pid 650 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’
exec failed with the params {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}
bootstrap failed with exit code 1
**** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.**
./discourse-doctor may help diagnose the problem.
I’ve run discourse doc many times including this time and it didn’t turn up anything I could see
في هذه الحالة، قم فقط بإجراء تثبيت جديد، وقم بعمل نسخة احتياطية للموقع القديم، وقم باستعادته إلى الموقع الجديد.
ها ها، كان ذلك نوعًا من توجيهي الأصلي.
إذا كان الأمر بهذه البساطة، فستُحل جميع مشاكلي.
انظر، كان قلقي هو أنني سأقوم بالتصدير من PG10 إلى 2.9 الجديد اللامع، وهو PG13، أليس كذلك، وبالتالي هل سيستوعب قاعدة البيانات - افتراضي هو لا.
وبالتالي في سيناريو النسخ الاحتياطي والاستعادة، في هذا السياق - هل يكفي التصدير/الاستيراد الإداري دون ترقية قاعدة البيانات القديمة أولاً كما كنت أحاول؟
نعم، ولك قد تحتاج إلى إصلاح مشكلة في قاعدة بياناتك الحالية قبل أن تتمكن من استعادتها على 2.9.
إليك حل قد ينجح، ولكن ستحتاج إلى استخدام %84b9c1be0d88b6592595e6e16827dbc1% كـ value لأن هذا هو معرف الاستطلاع الذي يسبب مشاكل في حالتك.
إذًا يبدو أن لديك فهرسًا تالفًا؟ (لم ألاحظ ذلك ولكن هذا ما يوحي به الرد الأخير).
إذا كانت هذه هي الحالة، فيمكنك البحث عن بعض الأمثلة. في الغالب، تحاول إعادة الفهرسة ومعرفة الفهارس التي لن تتم إعادة بنائها، ثم تحذف (أو تصلح إذا كنت ذكيًا) السجلات المارقة.
شكراً لك، بدا الأمر واعداً، لكنه توقف عند معرف + قيمة استطلاع جديد بعد تطبيق بعض تلك الخطوات العلاجية.
بينما قد تكون هذه هي المشكلة وقد تكون الحل - أعتقد أن جميع الاستطلاعات ستسبب توقفاً أو الكثير منها، وليس واحداً فقط، وأنا أستند أيضاً إلى تصريح فالكو في الموضوع الآخر:
هذا ليس فهرساً تالفاً.
بين الإصدارين 2.1 و 2.5، نقلنا الاستطلاعات من PluginStore إلى جداول مناسبة. أحد أسباب النقل هو ضمان اتساق البيانات، وهو بالضبط المشكلة التي تواجهها.
لديك قيمة مكررة في جدول
poll_options. هل يمكنك الذهاب إلى هناك وحذف الإدخالات المكررة؟
يلزم إجراء مزيد من التحقيق الدقيق.
مرحباً بالجميع،
أنا في نفس القارب مع @agemo، وأحصل على نفس الخطأ تمامًا، وأنا ماهر في التعامل مع قاعدة البيانات مباشرة.
هذا ما لا أفهمه. الحل المقترح هو ببساطة حذف استطلاعات الرأي ذات المعرف المكرر في عمود القيمة، ولكن عندما تحققت من جدولي، تبين أن هذه الإدخالات المكررة كلها تشير إلى post_id مختلف، وبالتالي تنتمي إلى مشاركات مختلفة، ولديها أيضًا بيانات وصفية مختلفة مثل عدد الأصوات وما إلى ذلك.
هل يمكن لشخص ما أن يشرح لي الهيكل القديم مقابل الهيكل الجديد حتى أتمكن من فهم هذا الخطأ. بالنسبة لي، حذف استطلاعات الرأي لا يحل المشكلة لأنني في الواقع أحذف بيانات المستخدمين.
شكرا!
يبدو لي أن هذا فهرس تالف. هل يمكنك إعادة فهرسة هذا الجدول؟
أو ربما تغير شيء ما ويتطلب ترحيلًا أكثر تعقيدًا. أو أن الترحيل معطل بطريقة ما.
مرحباً @pfaffman، يسعدني رؤيتك مرة أخرى. لقد استخدمت خدمتك من قبل لموقع مختلف.
-
يمكنني بالتأكيد إعادة بناء الفهرس على هذا الجدول، ولكن كيف سيساعد ذلك مع البيانات غير الفريدة؟ هل يمكنك توضيح لماذا تبدأ دائمًا بهذا؟ (لاحظت ذلك للتو في ردودك)
-
تم الترحيل باستخدام الإصدار 2.2b4، وهو الإصدار الذي نجح فيه استيراد استطلاعات الرأي.
-
هل أفهم بشكل صحيح أنه في الجدول القديم post_custom_fields، يشير القيمة → poll → options → id إلى الملخص وليس معرف الاستطلاع الفعلي؟
-
ما هو ملخص الاستطلاع على أي حال؟
شكراً على ردك، ولكن مجرد إزالة الاستطلاعات ليس حلاً للسجلات المكررة. أفترض أن الاستيراد من phpbb3 في وقت مبكر كان غير صحيح وأنشأ تلك السجلات. إنها صالحة، ولكن لديها فقط معرفات UUID مكررة لأن المستورد الأصلي لم يتحقق من ذلك.
على أي حال، الحل لأي شخص يصادف هذه المشكلة هو القيام بما يلي:
- تغيير السجلات الإشكالية في جدول
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';
-
تشغيل إعادة بناء التطبيق، أو التحديث، أو أي شيء يحاول المستخدم القيام به.
-
الاتصال بالحاوية قيد التشغيل مباشرة بعد بناء كل شيء وبدء تشغيله.
-
تغيير الاستطلاعات مرة أخرى إلى التسمية الأصلية:
update post_custom_fields set name = 'polls'_bak' where name = 'polls';
update post_custom_fields set name = 'polls-votes_bak'' where name = 'polls-votes';
- تشغيل الترحيل الذي يسبب المشكلة يدوياً من داخل حاوية التطبيق، مع ملاحظة أن
VERSIONهو الرقم الموجود في اسم ملف الترحيل.
أولاً، قم بإلغاء تشغيل الترحيل، وهذا لن يفعل شيئاً لأن طريقة down لا تفعل شيئاً لقاعدة البيانات:
rake db:migrate:down VERSION=20180820080623
قم بتشغيل الترحيل وابحث عن الخطأ الأول:
rake db:migrate:up VERSION=20180820080623
- ابحث في الجدول باستخدام واجهة رسومية لقاعدة البيانات لتسهيل التحرير لمعرف UUID الذي يسبب المشكلة:
select from post_custom_fields where value like '%your_UUID%';
-
الآن الجزء الصعب. معرف UUID هو معرف إجابة/خيار الاستطلاع، لذا ما عليك فعله هو تغيير معرف UUID هذا في الصف
poll، على سبيل المثال من731ef6901e968fc3f4e785fcb9e9abe8إلى731ef6901e968fc3f4e785fcb9e9abe9. من غير المرجح جداً أن تجد واحداً آخر مثله في نظامك. ولكن بعد القيام بذلك، تحتاج أيضاً إلى العثور على المعرف المقابل فيpoll-votesوتغييره إلى المعرف الجديد الخاص بك. بهذه الطريقة، لن تفقد أي أصوات أو إجابات. -
قم بتشغيل الترحيل مرة أخرى وابحث عن الخطأ التالي:
rake db:migrate:up VERSION=20180820080623
- كرر هذه العملية حتى يكتمل الترحيل وتكون قد نقلت جميع الاستطلاعات إلى جداولك الجديدة.
أنا مستاء من عدم قيام أي شخص بالرد حتى لشرح ما هو معرف UUID هذا وما يشير إليه. أعرف أنه مفتوح المصدر وأعرف أنه مرت سنوات منذ أن تم الالتزام به، أنا لا أشتكي ولكن بعض المساعدة من الأشخاص الذين يقومون فعلياً بالالتزام في المستودع الرسمي ستكون موضع تقدير كبير.
تم حل المشكلة، لذا أيام سعيدة.
شكراً!
عمل رائع هناك. ![]()
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.