فشل استعادة النسخة الاحتياطية على بيئة Docker نظيفة للمطور: فشل مصادقة النظير للمستخدم "postgres"

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

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

فقط لتقديم سياق حول ما أفعله (بشكل خاطئ ربما)

  1. حذف دليل Discourse المحلي تمامًا
  2. إيقاف وإزالة أي حاويات
  3. البدء من جديد عن طريق استنساخ Discourse و أيضًا المكونات الإضافية التي أستخدمها مباشرة بعد ذلك في دليل المكونات الإضافية
  4. تنفيذ أوامر boot_dev --init، و bundle install إذا لزم الأمر، و migrate database إذا لزم الأمر.
  5. باستخدام حساب المسؤول الوهمي، أقوم بتسجيل الدخول، وتحميل النسخة الاحتياطية التي قمت بتنزيلها من موقعي المباشر
  6. الضغط على استعادة النسخة الاحتياطية.

أخبرني إذا كان بإمكاني تقديم أي معلومات إضافية. سجلات النسخ الاحتياطي أدناه. وأوه نعم، لقد تحققت من أن pg_hba.conf في data/postgres/ لديه جميع طرق المصادقة مضبوطة على “trust”.

[2021-11-03 20:55:35] 'koen' has started the restore!
[2021-11-03 20:55:35] Marking restore as running...
[2021-11-03 20:55:35] Making sure /src/tmp/restores/default/2021-11-03-205535 exists...
[2021-11-03 20:55:35] Copying archive to tmp directory...
[2021-11-03 20:55:35] Extracting dump file...
[2021-11-03 20:55:36] Validating metadata...
[2021-11-03 20:55:36]   Current version: 20211022154420
[2021-11-03 20:55:36]   Restored version: 20211022154420
[2021-11-03 20:55:36] Enabling readonly mode...
[2021-11-03 20:55:36] Pausing sidekiq...
[2021-11-03 20:55:36] Waiting up to 60 seconds for Sidekiq to finish running jobs...
[2021-11-03 20:55:42] Creating missing functions in the discourse_functions schema...
[2021-11-03 20:55:42] Restoring dump file... (this may take a while)
[2021-11-03 20:55:42] psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL:  Peer authentication failed for user \"postgres\"
[2021-11-03 20:55:42] EXCEPTION: psql failed: psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL:  Peer authentication failed for user \"postgres\"
[2021-11-03 20:55:42] /src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/src/lib/backup_restore/database_restorer.rb:26:in `restore'
/src/lib/backup_restore/restorer.rb:51:in `run'
/src/script/spawn_backup_restore.rb:23:in `restore'
/src/script/spawn_backup_restore.rb:36:in `block in <main>'
/src/script/spawn_backup_restore.rb:4:in `fork'
/src/script/spawn_backup_restore.rb:4:in `<main>'
[2021-11-03 20:55:42] Trying to rollback...
[2021-11-03 20:55:42] There was no need to rollback
[2021-11-03 20:55:42] Cleaning stuff up...
[2021-11-03 20:55:42] Dropping functions from the discourse_functions schema...
[2021-11-03 20:55:42] Removing tmp '/src/tmp/restores/default/2021-11-03-205535' directory...
[2021-11-03 20:55:42] Unpausing sidekiq...
[2021-11-03 20:55:42] Marking restore as finished...
[2021-11-03 20:55:42] Notifying 'koen' of the end of the restore...
[2021-11-03 20:55:46] Finished!
إعجاب واحد (1)

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

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

هل يمكن لأحد أن يكرر هذا؟ لقد قمت في وقت مضى بتشغيل بيئة التطوير الأصلية ولكنني تخلصت منها عندما لاحظت سهولة استخدام إعداد Docker. هل يمكن أن يكون هناك شيء يزعجني من ذلك الإرث القديم؟ شيء خاطئ ينبع من منصة قاعدة بيانات PostgreSQL المحلية السابقة؟ هل يمكن أن يؤثر ذلك على بعضها البعض إذا كان الإعداد الجديد يعمل من Docker؟ مجرد تخمين. هل يمكن لأحد أن يوجهني في الاتجاه الصحيح أو إلى الأشخاص المناسبين؟ أعتقد أن أخذ نسخة من الموقع المباشر لأغراض الاختبار هو حالة استخدام مهمة جداً؟ هل هناك أي شيء يمكنني فعله لتقديم المزيد من المعلومات؟ أقوم بتشغيل اختبار تلقائي الآن ولكنه لا ينتج عنه أي شيء أيضاً…

[2021-11-29 19:43:39] بدأ 'koen' الاستعادة!
[2021-11-29 19:43:39] وضع علامة على الاستعادة قيد التشغيل...
[2021-11-29 19:43:39] التأكد من وجود /src/tmp/restores/default/2021-11-29-194339...
[2021-11-29 19:43:39] نسخ الأرشيف إلى دليل tmp...
[2021-11-29 19:43:39] استخراج ملف التفريغ...
[2021-11-29 19:43:40] التحقق من البيانات الوصفية...
[2021-11-29 19:43:40]   الإصدار الحالي: 20211124161346
[2021-11-29 19:43:40]   الإصدار المستعاد: 20211123033311
[2021-11-29 19:43:40] تمكين وضع القراءة فقط...
[2021-11-29 19:43:40] إيقاف Sidekiq مؤقتاً...
[2021-11-29 19:43:40] الانتظار لمدة تصل إلى 60 ثانية لـ Sidekiq لإنهاء تشغيل المهام...
[2021-11-29 19:43:46] إنشاء وظائف مفقودة في مخطط discourse_functions...
[2021-11-29 19:43:46] استعادة ملف التفريغ... (قد يستغرق هذا بعض الوقت)
[2021-11-29 19:43:47] psql: خطأ: فشل الاتصال بالخادم على المقبس "/var/run/postgresql/.s.PGSQL.5432": FATAL: فشل مصادقة النظير للمستخدم "postgres"
[2021-11-29 19:43:47] استثناء: فشل psql: psql: خطأ: فشل الاتصال بالخادم على المقبس "/var/run/postgresql/.s.PGSQL.5432": FATAL: فشل مصادقة النظير للمستخدم "postgres"

[2021-11-29 19:43:47] /src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/src/lib/backup_restore/database_restorer.rb:26:in `restore'
/src/lib/backup_restore/restorer.rb:51:in `run'
/src/script/spawn_backup_restore.rb:23:in `restore'
/src/script/spawn_backup_restore.rb:36:in `block in <main>'
/src/script/spawn_backup_restore.rb:4:in `fork'
/src/script/spawn_backup_restore.rb:4:in `<main>'
[2021-11-29 19:43:47] محاولة التراجع...
[2021-11-29 19:43:47] لم تكن هناك حاجة للتراجع
[2021-11-29 19:43:47] تنظيف الأشياء...
[2021-11-29 19:43:47] إسقاط الوظائف من مخطط discourse_functions...
[2021-11-29 19:43:47] إزالة دليل tmp '/src/tmp/restores/default/2021-11-29-194339'...
[2021-11-29 19:43:47] إلغاء إيقاف Sidekiq مؤقتاً...
[2021-11-29 19:43:47] وضع علامة على انتهاء الاستعادة...
[2021-11-29 19:43:47] إخطار 'koen' بنهاية الاستعادة...
[2021-11-29 19:43:51] انتهى!

كوين

حسنًا، أسفر الأمر d/rake autospec عن 14 فشلاً، يبدو أن أول 6 منها متعلقة بمشكلة مصادقة PEER.

لا أستطيع فهمها تمامًا ولكني اعتقدت أنني سأنشرها هنا لمن يستطيع التحقيق فيها. يبدو أنها نفس الخطأ ولكن بإصدارات Postgres مختلفة في كل مرة.

آمل أن يساعد هذا

Failures:

  1) BackupRestore::DatabaseRestorer#restore with real psql restores from PostgreSQL 9.5
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0
     
     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"                                                                                        
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:61:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'

  2) BackupRestore::DatabaseRestorer#restore with real psql restores from PostgreSQL 9.3
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0
     
     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"                                                                                        
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:51:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'

  3) BackupRestore::DatabaseRestorer#restore with real psql restores from PostgreSQL 12
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0
     
     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"                                                                                        
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:74:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'

  4) BackupRestore::DatabaseRestorer#restore with real psql restores from PostgreSQL 11
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0
     
     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"                                                                                        
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:70:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'

  5) BackupRestore::DatabaseRestorer#restore with real psql restores from PostgreSQL 9.5.5
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0
     
     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"                                                                                        
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:56:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'

  6) BackupRestore::DatabaseRestorer#restore with real psql restores from PostgreSQL 10
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0
     
     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"                                                                                        
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:66:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'


أرى هذا أيضًا، في نفس الظروف. سواء عبر الواجهة الرسومية أو الطرفية.

الإخراج الكامل أدناه. يتم تشغيل هذا من داخل WSL2 على نظام ويندوز.

أي أفكار؟

$ d/discourse restore ragdoll-forums-2022-03-27-000005-v20220215015538.tar.gz
Starting restore: ragdoll-forums-2022-03-27-000005-v20220215015538.tar.gz
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /src/tmp/restores/default/2022-03-28-104731 exists...
Copying archive to tmp directory...
Unzipping archive, this may take a while...
Extracting dump file...
Validating metadata...
  Current version: 20220325064954
  Restored version: 20220215015538
Enabling readonly mode...
Pausing sidekiq...
Waiting up to 60 seconds for Sidekiq to finish running jobs...
Creating missing functions in the discourse_functions schema...
Restoring dump file... (this may take a while)
psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL:  Peer authentication failed for user \"postgres\"
EXCEPTION: psql failed: psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL:  Peer authentication failed for user \"postgres\"
/src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/src/lib/backup_restore/database_restorer.rb:26:in `restore'
/src/lib/backup_restore/restorer.rb:51:in `run'
script/discourse:149:in `restore'
/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
script/discourse:290:in `<main>'
Trying to rollback...
There was no need to rollback
Cleaning stuff up...
Dropping functions from the discourse_functions schema...
Removing tmp '/src/tmp/restores/default/2022-03-28-104731' directory...
Unpausing sidekiq...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.
Failed to report error: can't alloc thread 0   PostSearchData Upsert (1.1ms)  INSERT INTO \"post_search_data\" (\"raw_data\",\"post_id\",\"locale\",\"version\",\"search_data\",\"private_message\") VALUES ('The restore has failed. Here’s the log: [2022-03-28 10:47:31] [STARTED] [2022-03-28 10:47:31] ''system'' has started the restore! [2022-03-28 10:47:31] Marking restore as running... [2022-03-28 10:47:31] Making sure /src/tmp/restores/default/2022-03-28-104731 exists... [2022-03-28 10:47:31] Copying archive to tmp directory... [2022-03-28 10:47:31] Unzipping archive, this may take a while... [2022-03-28 10:47:31] Extracting dump file... [2022-03-28 10:47:32] Validating metadata... [2022-03-28 10:47:32] Current version: 20220325064954 [2022-03-28 10:47:32] Restored version: 20220215015538 [2022-03-28 10:47:32] Enabling readonly mode... [2022-03-28 10:47:32] Pausing sidekiq... [2022-03-28 10:47:32] Waiting up to 60 seconds for Sidekiq to finish running jobs... [2022-03-28 10:47:38] Creating missing functions in the discourse_functions schema... [2022-03-28 10:47:38] Restoring dump file... (this may take a while) [2022-03-28 10:47:38] psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL : Peer authentication failed for user \"postgres\" [2022-03-28 10:47:38] EXCEPTION: psql failed: psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL: Peer authentication failed for user \"postgres\" [2022-03-28 10:47:38] /src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'' /src/lib/backup_restore/database_restorer.rb:26:in `restore'' /src/lib/backup_restore/restorer.rb:51:in `run'' script/discourse:149:in `restore'' /usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'' /usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'' /usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'' /usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'' script/discourse:290:in ` \u003c main \u003e '' [2022-03-28 10:47:38] Trying to rollback... [2022-03-28 10:47:38] There was no need to rollback [2022-03-28 10:47:38] Cleaning stuff up... [2022-03-28 10:47:38] Dropping functions from the discourse_functions schema... [2022-03-28 10:47:38] Removing tmp ''/src/tmp/restores/default/2022-03-28-104731'' directory... [2022-03-28 10:47:38] Unpausing sidekiq... [2022-03-28 10:47:38] Marking restore as finished... [2022-03-28 10:47:38] Notifying ''system'' of the end of the restore...', 17, 'en', 4, '''-03'':12,19,30,40,50,61,74,83,91,100,109,118,126,143,157,171,193,218,262,271,283,292,305,315,323,333 ''-28'':13,20,31,41,51,62,75,84,92,101,110,119,127,144,158,172,194,219,263,272,284,293,306,316,324,334 ''/src/lib/backup_restore/database_restorer.rb'':223,228 ''/src/lib/backup_restore/restorer.rb'':232 ''/src/tmp/restores/default/2022-03-28-104731'':47,312 ''/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb'':249 ''/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/base.rb'':253 ''/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb'':240 ''/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb'':244 ''/var/run/postgresql/.s.pgsql.5432'':183,208 ''10'':14,21,32,42,52,63,76,85,93,102,111,120,128,145,159,173,195,220,264,273,285,294,307,317,325,335 ''127'':245 ''149'':237 ''2022'':11,18,29,39,49,60,73,82,90,99,108,117,125,142,156,170,192,217,261,270,282,291,304,314,322,332 ''20220215015538'':107 ''20220325064954'':98 ''26'':229 ''27'':241 ''290'':258 ''31'':16,23,34,44,54,65,78 ''32'':87,95,104,113,122,130 ''38'':147,161,175,197,222,266,275,287,296,309,319,327,337 ''392'':250 ''47'':15,22,33,43,53,64,77,86,94,103,112,121,129,146,160,174,196,221,265,274,286,295,308,318,326,336 ''485'':254 ''51'':233 ''60'':134 ''92'':224 ''archiv'':56,67 ''authent'':187,212 ''clean'':288 ''command'':248 ''connect'':178,203 ''copi'':55 ''creat'':148 ''current'':96 ''directori'':59,313 ''discours'':153,301 ''dispatch'':252 ''drop'':297 ''dump'':80,163,227 ''enabl'':114 ''end'':342 ''error'':177,202 ''except'':198 ''exist'':48 ''extract'':79 ''fail'':2A,6,184,188,200,209,213 ''fatal'':185,210 ''file'':81,164 ''finish'':139,331 ''function'':150,154,298,302 ''invok'':247 ''job'':141 ''main'':260 ''make'':45 ''mark'':35,328 ''may'':69,166 ''metadata'':89 ''miss'':149 ''mode'':116 ''need'':279 ''notifi'':338 ''paus'':123 ''peer'':186,211 ''postgr'':191,216 ''psql'':176,199,201 ''readon'':115 ''remov'':310 ''restor'':1A,4,28,36,105,162,226,231,239,329,345 ''rollback'':269,281 ''run'':38,140,235,243 ''schema'':155,303 ''script/discourse'':236,257 ''second'':135 ''server'':180,205 ''sidekiq'':124,137,321 ''socket'':182,207 ''start'':17,26,256 ''stuff'':289 ''sure'':46 ''system'':24,339 ''take'':70,167 ''tmp'':58,311 ''tri'':267 ''unpaus'':320 ''unzip'':66 ''user'':190,215 ''valid'':88 ''version'':97,106 ''wait'':131 ', TRUE) ON CONFLICT (\"post_id\") DO UPDATE SET \"raw_data\"=excluded.\"raw_data\",\"locale\"=excluded.\"locale\",\"version\"=excluded.\"version\",\"search_data\"=excluded.\"search_data\",\"private_message\"=excluded.\"private_message\" RETURNING \"post_id\"
إعجاب واحد (1)

لقد واجهت نفس المشاكل.
أخيرًا، قمت بإدراج ما يلي كحل بديل

   if Rails.env.development?
      username = "discourse"
      password = "discourse"
      config["host"] = "localhost"
      config["port"] = 5432
      config["database"] = "discourse_development"
    end

قبل

  DatabaseConfiguration.new(

في /lib/backup_restore.rb.

كان علي أيضًا تعيين كلمة المرور للمستخدم discourse عبر

d/psql -c "ALTER USER discourse WITH PASSWORD 'discourse';"

قد تكون هناك طرق أفضل لتحقيق ذلك.

إعجاب واحد (1)

شكرا جزيلا! لقد ساعد ذلك حقا! :slight_smile:

يجب اعتبار هذا #bug، في رأيي.

خطأ ذو أولوية منخفضة لأنه لا يؤثر على موقع إنتاجي. ولا أعتقد أن أي شخص من الفريق يستخدم حاليًا بيئة Docker للتطوير. لقد قمت بإعادة تصنيف الموضوع ووضعت عليه علامة pr-welcome.

5 إعجابات

هذا يعمل لدي:

ولكن هناك عدة طرق أخرى لإصلاح هذا للاختيار من بينها:

  • إضافة إعداد بيئة USER=discourse إلى صورة تمهيد docker

  • إضافة -e USER=discourse \\ إلى d\\exec

  • إضافة هذا إلى backup_restore.rb

      if Rails.env.development?
        username = ENV["USER"] || "discourse"
      end
    

بالإضافة إلى ذلك، هناك مشكلة جديدة عند تنفيذ d/discourse في بيئة تطوير docker:

$ d/discourse backup

<internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:86:in `require': cannot load such file -- thor (LoadError)
        from <internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:86:in `require'
        from script/discourse:4:in `<main>'

بينما يعمل d/bundle exec script/discourse backup (انظر patch).

مرحباً @gerhard،

لقد واجهت نفس المشكلة المذكورة في هذا الموضوع، وقد قام طلب السحب (PR) أعلاه بحل مشكلتي. أعتقد أنه يجب إعادة فتح طلب السحب هذا ودمجه.

إعجاب واحد (1)

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

إعجابَين (2)

أنا لا أستخدم بيئة docker للتطوير، لذا لا يمكنني اختبارها، ولكن ربما سينجح هذا؟

--- a/lib/backup_restore.rb
+++ b/lib/backup_restore.rb
@@ -135,7 +135,8 @@ module BackupRestore
     DatabaseConfiguration.new(
       config["backup_host"] || config["host"],
       config["backup_port"] || config["port"],
-      config["username"] || username || ENV["USER"] || "postgres",
+      config["username"] || username || ENV["USER"] || ENV["DISCOURSE_DEV_DB_USERNAME"] ||
+        "postgres",
       config["password"] || password,
       config["database"],
     )

إذا نجح الأمر، يرجى إنشاء طلب سحب (PR).

إعجاب واحد (1)

إذا استخدمنا نهج dev container، فإن مجرد إضافة “USER”: “discourse”، في قسم “remoteEnv”، ستعمل وستكون قادرة على تصدير قاعدة البيانات