عند تشغيل آخر ترقية (من الإصدار 6 إلى 7)، فشلت عملية rake db:migrate بسبب ما يُفترض أنه اسم مستخدم مكرر. وبما أنني لست معتاداً على سطر الأوامر في لينكس، حاولت بعدها الدخول إلى وحدة تحكم Rails لإصلاح المشكلة، لكن الوحدة لم تُحمّل لأنها لم تستطع الاتصال بقاعدة البيانات. ثم بحثت في جوجل وحاولت تشغيل الأمر /etc/init.d/postgresql restart، لكنه فشل بالخطأ التالي:
[....] إعادة تشغيل خادم قاعدة بيانات PostgreSQL 12: main[....]
خطأ: /usr/lib/postgresql/12/bin/pg_ctl /usr/lib/postgresql/12/bin/pg_ctl start -D /shared/postgres_data -l /var/log/postgresql/postgresql-12-main.log -s -o -c config_file="/etc/postgresql/12/main/postgresql.conf` خرج بحالة 1: 2021-03-08 20:19:10.354 UTC [763]
FATAL: ملفات قاعدة البيانات غير متوافقة مع الخادم 2021-03-08 20:19:10.354 UTC [763]
DETAIL: تم تهيئة دليل البيانات بواسطة إصدار PostgreSQL 13، وهو غير متوافق مع هذا الإصدار 12.3 (Debian 12.3-1.pgdg100+1). p[فشل: تعذر بدء الخادم. راجع سجل المخرجات. ... فشل!
فشل!
ثم حاولت تشغيل /etc/init.d/postgresql restart version 12.3، ولم يُظهر هذا الأمر خطأً لكنه لم يُظهر أي رسالة أخرى أيضاً. ولا يزال من المستحيل تسجيل الدخول إلى psql (على الأقل باستخدام الأمر sudo -u postgres psql discourse الذي وجدته في هذا المنتدى).
هل يمكن لأي شخص تقديم نصيحة حول كيفية استعادة الخادم؟ ولماذا تسببت آخر ترقية في مثل هذا الخطأ الكبير؟ لقد استخدمت تثبيت الـ 30 دقيقة، وكل شيء قياسي تماماً. وأنا مستعد أيضاً لدفع مبلغ لشخص ما لإصلاح هذه المشكلة.
كان هناك خطأ في مكان ما سمح بأسماء مستخدمين بحالات أحرف مختلفة. ثم تم إصلاحه بحيث لا يحدث ذلك.
قد تتمكن من تشغيل الحاوية القديمة مرة أخرى وإصلاحها عبر واجهة المستخدم.
ولكن إذا لم تقم بترقية عبر سطر الأوامر منذ فترة، فهناك أيضًا ترقية لقاعدة البيانات، مما يزيد الأمور تعقيدًا.
إذا لم يكن الوضع أسوأ من ذلك، فسأقوم بإصلاحه غدًا صباحًا بتوقيت المحيط الهادئ Redirecting…
إذا كنت ترغب في دفع مبلغ إضافي لإنجاز الأمر الليلة، فمرسلة بريدًا إلكترونيًا إلى Jay@literatecomputing.com في أقرب وقت، وقد أتمكن على الأقل من إعادته للعمل.
*** يرجى الصبر، قد تستغرق الخطوات التالية بعض الوقت ***
********************************************************
إعادة تشغيل Unicorn لتحرير الذاكرة
إعادة تشغيل unicorn pid: 46
في انتظار إعادة تحميل Unicorn.
في انتظار إعادة تحميل Unicorn..
في انتظار إعادة تحميل Unicorn...
في انتظار إعادة تحميل Unicorn....
في انتظار إعادة تحميل Unicorn.....
في انتظار إعادة تحميل Unicorn......
في انتظار إعادة تحميل Unicorn.......
في انتظار إعادة تحميل Unicorn........
في انتظار إعادة تحميل Unicorn.........
في انتظار إعادة تحميل Unicorn..........
في انتظار إعادة تحميل Unicorn...........
في انتظار إعادة تحميل Unicorn............
إيقاف 3 عمال Unicorn لتحرير الذاكرة
إيقاف قائمة المهام لاستعادة الذاكرة، pid الرئيسي هو 10397
$ cd /var/www/discourse && git fetch --tags --force && git reset --hard HEAD@{upstream}
من https://github.com/discourse/discourse
t [تحديث الوسم] latest-release -> latest-release
* [وسم جديد] v2.5.6 -> v2.5.6
جاري استرجاع الملفات: 87% (2225/2539)
جاري استرجاع الملفات: 88% (2235/2539)
جاري استرجاع الملفات: 89% (2260/2539)
جاري استرجاع الملفات: 90% (2286/2539)
جاري استرجاع الملفات: 91% (2311/2539)
جاري استرجاع الملفات: 92% (2336/2539)
جاري استرجاع الملفات: 93% (2362/2539)
جاري استرجاع الملفات: 94% (2387/2539)
جاري استرجاع الملفات: 95% (2413/2539)
جاري استرجاع الملفات: 96% (2438/2539)
جاري استرجاع الملفات: 97% (2463/2539)
جاري استرجاع الملفات: 98% (2489/2539)
جاري استرجاع الملفات: 99% (2514/2539)
جاري استرجاع الملفات: 100% (2539/2539)
جاري استرجاع الملفات: 100% (2539/2539)، انتهى.
HEAD الآن عند 0da649e4fa DEV: إضافة منفذ إضافة جديد إلى قالب الوسوم (#12302)
$ bundle install --deployment --jobs 4 --without test development
[مهمل] تم إهمال العلم `--deployment` لأنه يعتمد على تذكره عبر استدعاءات bundler، وهو ما لن يفعله bundler في الإصدارات المستقبلية. بدلاً من ذلك، يرجى استخدام `bundle config set deployment 'true'`، والتوقف عن استخدام هذا العلم
[مهمل] تم إهمال العلم `--without` لأنه يعتمد على تذكره عبر استدعاءات bundler، وهو ما لن يفعله bundler في الإصدارات المستقبلية. بدلاً من ذلك، يرجى استخدام `bundle config set without 'test development'`، والتوقف عن استخدام هذا العلم
تحذير: الإصدار التشغيلي من Bundler (2.1.4) أقدم من الإصدار الذي أنشأ ملف القفل (2.2.7). نقترح عليك الترقية إلى الإصدار الذي أنشأ ملف القفل عن طريق تشغيل `gem install bundler:2.2.7`.
جاري جلب بيانات gem من https://rubygems.org/............
جاري جلب https://github.com/discourse/mail.git
جاري جلب rake 13.0.3
جاري تثبيت rake 13.0.3
جاري جلب concurrent-ruby 1.1.8
جاري جلب minitest 5.14.4
استخدام thread_safe 0.3.6
جاري جلب zeitwerk 2.4.2
جاري تثبيت zeitwerk 2.4.2
جاري تثبيت minitest 5.14.4
جاري تثبيت concurrent-ruby 1.1.8
استخدام builder 3.2.4
استخدام erubi 1.10.0
جاري جلب racc 1.5.2
استخدام crass 1.0.6
استخدام rack 2.2.3
استخدام mini_mime 1.0.2
استخدام public_suffix 4.0.6
جاري جلب aws-eventstream 1.1.1
جاري تثبيت racc 1.5.2 مع ملحقات أصلية
جاري تثبيت aws-eventstream 1.1.1
استخدام aws-partitions 1.390.0
استخدام jmespath 1.4.0
استخدام ember-source 2.18.2
استخدام execjs 2.7.0
جاري جلب msgpack 1.4.2
جاري تثبيت msgpack 1.4.2 مع ملحقات أصلية
استخدام bundler 2.1.4
استخدام byebug 11.1.3
استخدام cbor 0.5.9.6
جاري جلب chunky_png 1.4.0
جاري تثبيت chunky_png 1.4.0
استخدام coderay 1.1.3
استخدام colored2 3.1.2
استخدام connection_pool 2.2.3
استخدام cppjieba_rb 0.3.3
استخدام diffy 3.4.0
استخدام method_source 1.0.0
جاري جلب openssl 2.2.0
جاري جلب thor 1.1.0
استخدام discourse-ember-source 3.12.2.2
جاري جلب discourse-fonts 0.0.7
جاري تثبيت thor 1.1.0
جاري تثبيت openssl 2.2.0 مع ملحقات أصلية
استخدام exifr 1.3.9
استخدام fspath 3.1.2
استخدام image_size 1.5.0
استخدام in_threads 1.5.4
استخدام progress 3.5.2
استخدام email_reply_trimmer 0.1.13
جاري جلب excon 0.79.0
جاري تثبيت excon 0.79.0
جاري تثبيت discourse-fonts 0.0.7
استخدام multipart-post 2.1.1
جاري جلب faraday-net_http 1.0.1
جاري جلب ruby2_keywords 0.0.4
استخدام fast_blank 1.0.0
استخدام fast_xs 0.8.0
جاري جلب fastimage 2.2.3
جاري تثبيت ruby2_keywords 0.0.4
جاري تثبيت faraday-net_http 1.0.1
جاري تثبيت fastimage 2.2.3
جاري جلب ffi 1.15.0
استخدام gc_tracer 1.5.1
استخدام guess_html_encoding 0.0.11
استخدام hashie 4.1.0
استخدام highline 2.0.3
استخدام hkdf 0.3.0
استخدام htmlentities 4.3.4
استخدام http_accept_language 2.1.1
جاري جلب json 2.5.1
استخدام jwt 2.2.2
استخدام kgio 2.11.3
استخدام libv8 8.4.255.0 (x86_64-linux)
استخدام logstash-event 1.2.02
جاري جلب logster 2.9.6
جاري تثبيت json 2.5.1 مع ملحقات أصلية
جاري تثبيت logster 2.9.6
جاري تثبيت ffi 1.15.0 مع ملحقات أصلية
استخدام lru_redux 1.1.0
استخدام lz4-ruby 0.3.3
استخدام maxminddb 0.1.22
جاري جلب memory_profiler 1.0.0
جاري تثبيت memory_profiler 1.0.0
استخدام redis 4.2.5
استخدام multi_json 1.15.0
استخدام multi_xml 0.6.0
استخدام mustache 1.1.1
جاري جلب mini_sql 1.0.1
جاري جلب nio4r 2.5.7
جاري تثبيت mini_sql 1.0.1
جاري تثبيت nio4r 2.5.7 مع ملحقات أصلية
جاري جلب oauth 0.5.5
جاري جلب oj 3.11.2
جاري تثبيت oauth 0.5.5
جاري تثبيت oj 3.11.2 مع ملحقات أصلية
استخدام optimist 3.0.1
استخدام pg 1.2.3
استخدام r2 0.2.7
استخدام raindrops 0.19.1
استخدام rchardet 1.8.0
استخدام rinku 2.0.6
استخدام rotp 6.2.0
جاري جلب rqrcode_core 0.2.0
استخدام rtlit 0.0.5
استخدام rubyzip 2.3.0
استخدام tilt 2.0.10
استخدام sshkey 2.0.0
استخدام stackprof 0.2.16
استخدام unf_ext 0.0.7.7
استخدام xorcist 1.1.2
جاري تثبيت rqrcode_core 0.2.0
استخدام rack-test 1.1.0
استخدام mail 2.8.0.edge من https://github.com/discourse/mail.git (عند master@5b700fc)
جاري جلب tzinfo 1.2.9
استخدام addressable 2.7.0
استخدام request_store 1.5.0
استخدام message_bus 3.3.4
جاري جلب rack-mini-profiler 2.3.1
استخدام rack-protection 2.1.0
استخدام aws-sigv4 1.2.2
استخدام barber 0.12.2
استخدام ember-data-source 3.0.2
استخدام uglifier 4.2.0
جاري جلب i18n 1.8.9
جاري تثبيت i18n 1.8.9
جاري تثبيت tzinfo 1.2.9
جاري تثبيت rack-mini-profiler 2.3.1
استخدام sprockets 3.7.2
جاري جلب bootsnap 1.7.2
جاري تثبيت bootsnap 1.7.2 مع ملحقات أصلية
استخدام pry 0.13.1
استخدام discourse_image_optim 0.26.2
جاري جلب nokogiri 1.11.1 (x86_64-linux)
جاري جلب openssl-signature_algorithm 1.1.1
جاري جلب faraday 1.3.0
جاري تثبيت openssl-signature_algorithm 1.1.1
جاري تثبيت faraday 1.3.0
استخدام omniauth 1.9.1
استخدام logstash-logger 0.26.1
استخدام mini_racer 0.3.1
استخدام webpush 1.1.0
جاري جلب sidekiq 6.1.3
جاري تثبيت sidekiq 6.1.3
جاري جلب redis-namespace 1.8.1
جاري تثبيت nokogiri 1.11.1 (x86_64-linux)
جاري تثبيت redis-namespace 1.8.1
جاري جلب mini_suffix 0.3.2
جاري تثبيت mini_suffix 0.3.2
استخدام sassc 2.0.1
استخدام rbtrace 0.4.14
جاري جلب unicorn 5.8.0
جاري جلب puma 5.2.2
جاري تثبيت unicorn 5.8.0 مع ملحقات أصلية
جاري تثبيت puma 5.2.2 مع ملحقات أصلية
استخدام unf 0.1.4
جاري جلب rqrcode 1.2.0
جاري جلب css_parser 1.9.0
استخدام aws-sdk-core 3.109.2
استخدام ember-handlebars-template 0.8.0
استخدام pry-byebug 3.9.0
استخدام pry-rails 0.3.9
جاري جلب activesupport 6.0.3.5
جاري تثبيت css_parser 1.9.0
جاري تثبيت rqrcode 1.2.0
جاري تثبيت activesupport 6.0.3.5
استخدام cose 1.2.0
جاري جلب omniauth-oauth 1.2.0
جاري تثبيت omniauth-oauth 1.2.0
استخدام oauth2 1.4.4
جاري جلب mini_scheduler 0.13.0
جاري جلب loofah 2.9.0
جاري تثبيت mini_scheduler 0.13.0
جاري تثبيت loofah 2.9.0
جاري جلب nokogumbo 2.0.4
استخدام ruby-readability 0.7.0
استخدام aws-sdk-kms 1.39.0
استخدام aws-sdk-sns 1.35.0
جاري جلب omniauth-oauth2 1.7.1
جاري تثبيت nokogumbo 2.0.4 مع ملحقات أصلية
جاري تثبيت omniauth-oauth2 1.7.1
استخدام omniauth-twitter 1.4.0
استخدام rails-html-sanitizer 1.3.0
استخدام aws-sdk-s3 1.83.2
استخدام omniauth-facebook 8.0.0
استخدام omniauth-github 1.4.0
جاري جلب omniauth-google-oauth2 0.8.1
جاري تثبيت omniauth-google-oauth2 0.8.1
استخدام rails-dom-testing 2.0.3
استخدام globalid 0.4.2
جاري جلب actionview 6.0.3.5
جاري جلب activemodel 6.0.3.5
جاري جلب activejob 6.0.3.5
جاري تثبيت activejob 6.0.3.5
جاري تثبيت activemodel 6.0.3.5
جاري تثبيت actionview 6.0.3.5
جاري جلب sanitize 5.2.3
جاري تثبيت sanitize 5.2.3
استخدام active_model_serializers 0.8.4
جاري جلب activerecord 6.0.3.5
جاري جلب onebox 2.2.6
جاري تثبيت activerecord 6.0.3.5
جاري تثبيت onebox 2.2.6
جاري جلب actionpack 6.0.3.5
جاري تثبيت actionpack 6.0.3.5
استخدام actionview_precompiler 0.2.3
جاري جلب railties 6.0.3.5
جاري جلب actionmailer 6.0.3.5
جاري تثبيت actionmailer 6.0.3.5
جاري تثبيت railties 6.0.3.5
استخدام sprockets-rails 3.2.2
استخدام seed-fu 2.3.9
استخدام jquery-rails 4.4.0
استخدام lograge 0.11.2
جاري جلب rails_failover 0.6.5
استخدام rails_multisite 2.5.0
استخدام sassc-rails 2.1.2
استخدام discourse-ember-rails 0.18.6
جاري تثبيت rails_failover 0.6.5
اكتمل الحزمة! 124 اعتماد ملف Gemfile، تم تثبيت 162 gem الآن.
لم يتم تثبيت gems في المجموعات test و development.
تم تثبيت gems المحززة في `./vendor/bundle`
$ bundle exec rake plugin:pull_compatible_all
discourse-legal-tools هو بالفعل في أحدث إصدار متوافق
docker_manager هو بالفعل في أحدث إصدار متوافق
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
--------------------------------------------------------------------------------
1 عمليات هجرة فشلت!
فشل في هجرة default
#<StandardError: حدث خطأ، تم إلغاء هذا وجميع عمليات الهجرة اللاحقة:
PG::UniqueViolation: ERROR: قيمة المفتاح المكرر تنتهك قيد التكرار "index_users_on_username"
DETAIL: المفتاح (username)=(Martina_S) موجود بالفعل.
>
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.3.1/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.3.1/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/database_statements.rb:92:in `block (2 levels) in execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/database_statements.rb:91:in `block in execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:722:in `block (2 levels) in log'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:721:in `block in log'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:712:in `log'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/database_statements.rb:90:in `execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:890:in `block in method_missing'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:858:in `block in say_with_time'
/usr/local/lib/ruby/2.6.0/benchmark.rb:293:in `measure'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:858:in `say_with_time'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:879:in `method_missing'
/var/www/discourse/db/migrate/20210120125607_rename_english_locale.rb:17:in `rename_locale'
/var/www/discourse/db/migrate/20210120125607_rename_english_locale.rb:6:in `up'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:831:in `exec_migration'
/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/usr/local/lib/ruby/2.6.0/benchmark.rb:293:in `measure'
/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/usr/local/lib/ruby/2.6.0/benchmark.rb:293:in `measure'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:811:in `block in migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:471:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:810:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1002:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1310:in `block in execute_migration_in_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1361:in `block in ddl_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/transactions.rb:212:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1361:in `ddl_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1309:in `execute_migration_in_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1281:in `block in migrate_without_lock'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1280:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1280:in `migrate_without_lock'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1229:in `block in migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1382:in `with_advisory_lock'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1229:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1061:in `up'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1036:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/tasks/database_tasks.rb:238:in `migrate'
/var/www/discourse/lib/tasks/db.rake:184:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/db.rake:148:in `block (3 levels) in execute_concurently'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.5.0/lib/rails_multisite/connection_management.rb:76:in `with_connection'
/var/www/discourse/lib/tasks/db.rake:146:in `block (2 levels) in execute_concurently'
هاجر multisite يعمل باستخدام 1 خيوط
هجرة default
== 20201117212328 SetCategorySlugToLower: migrating ===========================
-- remove_index(:categories, {:name=>"unique_index_categories_on_slug"})
-> 0.0069s
-- execute("UPDATE categories SET slug = LOWER(slug)")
-> 0.0196s
-- add_index(:categories, "COALESCE(parent_category_id, -1), LOWER(slug)", {:name=>"unique_index_categories_on_slug", :where=>"slug != ''", :unique=>true})
-> 0.0138s
== 20201117212328 SetCategorySlugToLower: migrated (0.0528s) ==================
== 20201210151635 CreateDoNotDisturbTimings: migrating ========================
-- create_table(:do_not_disturb_timings)
-> 0.0192s
-- add_index(:do_not_disturb_timings, [:user_id], {:unique=>false})
-> 0.0039s
-- add_index(:do_not_disturb_timings, [:starts_at], {:unique=>false})
-> 0.0029s
-- add_index(:do_not_disturb_timings, [:ends_at], {:unique=>false})
-> 0.0026s
== 20201210151635 CreateDoNotDisturbTimings: migrated (0.0296s) ===============
== 20201218000000 RemoveFlagWebHooks: migrating ===============================
-- execute("DELETE FROM web_hook_event_types_hooks\nWHERE web_hook_event_type_id = 7\n")
-> 0.0005s
-- execute("DELETE FROM web_hook_event_types\nWHERE id = 7\n")
-> 0.0004s
== 20201218000000 RemoveFlagWebHooks: migrated (0.0016s) ======================
== 20201218000001 RemoveQueuedPostWebHooks: migrating =========================
-- execute("DELETE FROM web_hook_event_types_hooks\nWHERE web_hook_event_type_id = 8\n")
-> 0.0002s
-- execute("DELETE FROM web_hook_event_types\nWHERE id = 8\n")
-> 0.0002s
== 20201218000001 RemoveQueuedPostWebHooks: migrated (0.0011s) ================
== 20201229031635 AddUserProfileIndexes: migrating ============================
-- execute("CREATE INDEX CONCURRENTLY IF NOT EXISTS index_topic_links_on_user_and_clicks\nON topic_links(user_id, clicks DESC, created_at DESC)\nWHERE (NOT reflection and NOT quote and NOT internal)\n")
-> 0.2598s
-- execute("CREATE INDEX CONCURRENTLY IF NOT EXISTS index_posts_user_and_likes\nON posts(user_id, like_count desc, created_at desc)\nWHERE post_number > 1\n")
-> 0.7620s
== 20201229031635 AddUserProfileIndexes: migrated (1.0231s) ===================
== 20210105165605 AddProcessedToNotifications: migrating ======================
== 20210105165605 AddProcessedToNotifications: migrated (0.0007s) =============
== 20210106181418 CreateUserNotificationSchedules: migrating ==================
-- create_table(:user_notification_schedules)
-> 0.0043s
-- add_index(:user_notification_schedules, [:user_id])
-> 0.0027s
-- add_index(:user_notification_schedules, [:enabled])
-> 0.0024s
-- add_column(:do_not_disturb_timings, :scheduled, :boolean, {:default=>false})
-> 0.0008s
-- add_index(:do_not_disturb_timings, [:scheduled])
-> 0.0024s
== 20210106181418 CreateUserNotificationSchedules: migrated (0.0134s) =========
== 20210107005832 AddImapMissingColumnToIncomingEmail: migrating ==============
-- add_column(:incoming_emails, :imap_missing, :boolean, {:default=>false, :null=>false})
-> 0.0013s
== 20210107005832 AddImapMissingColumnToIncomingEmail: migrated (0.0019s) =====
== 20210111025920 AddRejectReasonToReviewables: migrating =====================
-- add_column(:reviewables, :reject_reason, :text)
-> 0.0008s
== 20210111025920 AddRejectReasonToReviewables: migrated (0.0015s) ============
== 20210119005647 AddCreatedViaToIncomingEmail: migrating =====================
-- add_column(:incoming_emails, :created_via, :integer, {:null=>true})
-> 0.0006s
== 20210119005647 AddCreatedViaToIncomingEmail: migrated (0.0012s) ============
== 20210120125607 RenameEnglishLocale: migrating ==============================
-- execute("UPDATE users\nSET locale = 'en_GB'\nWHERE locale = 'en'\n")
-> 0.0107s
-- execute("UPDATE site_settings\nSET value = 'en_GB'\nWHERE name = 'default_locale' AND value = 'en'\n")
-> 0.0007s
-- execute("UPDATE translation_overrides\nSET locale = 'en_GB'\nWHERE locale = 'en'\n")
-> 0.0004s
-- execute("UPDATE theme_translation_overrides\nSET locale = 'en_GB'\nWHERE locale = 'en'\n")
-> 0.0005s
-- execute("UPDATE users\nSET locale = 'en'\nWHERE locale = 'en_US'\n")
مدير Docker: فشل في الترقية
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:196:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:100:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/commands/runner/runner_command.rb:42:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/command/base.rb:69:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/command.rb:46:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `require'
bin/rails:17:in `<main>'
تشغيل 3 عمال Unicorn تم إيقافهم في البداية
ثم قمت بتشغيل التحديث عبر SSH، على أمل أن يكون ذلك أكثر قوة (في عام 2020 كانت هناك بضعة أشهر رفضت فيها واجهة الويب تحديث أي شيء وكان علي دائمًا المرور عبر SSH). عندما كتبت أمر التحديث على سطر الأوامر، قام بتنزيل الكثير من الأشياء وأخيراً أخبرني بتشغيل أمر إعادة بناء التطبيق. عندما فعلت ذلك، حدث نفس الخطأ. لا يمكنني تأكيد ما إذا كانت الأسطر المحيطة كانت نفسها ولم أنسخها، لكنه بالتأكيد كان لديه مشكلة index_username_on_users هذه في وسط عمليات هجرة قاعدة البيانات.
ملخص: إذا فسرت المخرج بشكل صحيح، فقد حدثت المشكلة في هجرة RenameEnglishLocale على الأمر execute("UPDATE users SET locale = 'en' WHERE locale = 'en_US'").
لقد رأيت هذا الخطأ من قبل؛ يحدث عندما يكون هناك تلف داخلي في جدول المستخدمين.
بشكل ما، لديك سجل “مستخدم” مكرر في الجدول، وقد تسلل إلى هناك في إصدار سابق أو أثناء ترقية أو عند إغلاق مفاجئ. لا أعرف بعد السبب الدقيق لحدوث ذلك، لكنني شاهدت حدوثه.
لديك خياران:
إذا كنت محظوظًا، شغّل ./launcher start app ثم rails c ثم DB.query('select * from users where username='Martina_S')، ثم قم بإعادة تسمية آخر سجل باسم Martina_S إلى شيء مثل Martina_S1.
إذا لم تكن محظوظًا، فلن تتمكن من تشغيل التطبيق، وعندها ستحتاج إلى تشغيل حاوية بيانات وتشغيل الأمر المذكور أعلاه من psql.
شكرًا لك على ردودك السريعة! كيف يمكنني تشغيل حاوية البيانات؟ حاولت تشغيل ./launcher start app ثم rails c، لكن Rails لا يبدأ لأن قاعدة البيانات غير نشطة. حاولت /etc/init.d/postgresql restart لكنني حصلت على الخطأ الذي تراه في المنشور الأول، وهو يتعلق بعدم توافق إصدار PostgreSQL (يدعم Debian LTS فقط الإصدار 12.x، بينما يبدو أن ترقية Discourse الأخيرة قد نقلت بياناتي إلى الإصدار 13.0؟؟). لا بأس بي في إصلاح هذا باستخدام SQL، فأنا مطور Rails في النهاية، لكنني لا أعرف كيف أصلح ما يبدو كتحديث معطوب لـ PostgreSQL من سطر الأوامر في لينكس.