Aiuto! L'aggiornamento ha portato a un fallimento completo

Ciao,

Durante l’esecuzione dell’aggiornamento più recente (da qualcosa come la versione 6 alla 7), rake db:migrate ha fallito a causa di un presunto nome utente duplicato. Non sentendomi molto a mio agio con la riga di comando Linux, ho provato ad accedere alla console di Rails per risolvere il problema, ma la console non si avvia perché non riesce a connettersi al database. Ho quindi cercato su Google e provato /etc/init.d/postgresql restart, ma l’operazione è fallita con il seguente messaggio:

[....] Riavvio del server di database PostgreSQL 12: main[....] 
Errore: /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" terminato con codice di uscita 1: 2021-03-08 20:19:10.354 UTC [763] 
FATALE: i file del database sono incompatibili con il server 2021-03-08 20:19:10.354 UTC [763] 
DETTAGLIO: la directory dei dati è stata inizializzata con la versione 13 di PostgreSQL, che non è compatibile con questa versione 12.3 (Debian 12.3-1.pgdg100+1). p[ERRORE: impossibile avviare il server. Esaminare l'output del registro. ... fallito!
 fallito!

Ho quindi provato /etc/init.d/postgresql restart version 12.3; non ha restituito errori, ma nemmeno alcun altro messaggio. È ancora impossibile accedere a psql (almeno usando sudo -u postgres psql discourse, come ho trovato su questo forum).

Qualcuno può consigliarmi come ripristinare il server? E perché l’ultimo aggiornamento ha causato un errore così grave? Ho utilizzato l’installazione in 30 minuti, tutto è il più standard possibile. Sono anche disposto a pagare qualcuno per risolvere il problema.

@pfaffman è specializzato in questo tipo di assistenza, forse contattalo.

Hai l’errore esatto? Potrebbe essere necessario scorrere un po’, ma sono curioso di sapere:

  1. Il nome della migrazione che non è riuscita
  2. L’istruzione che ha causato il fallimento

C’era un bug lungo il percorso che permetteva nomi utente con diverse maiuscole. Poi è stato corretto in modo che non lo permettesse più.

Potresti riuscire a riavviare il vecchio contenitore e correggerlo tramite l’interfaccia utente.

Ma se non hai eseguito un aggiornamento da riga di comando da un po’ di tempo, c’è anche un aggiornamento del database, che complica ulteriormente le cose.

Se la situazione non è molto peggiore di così, lo sistemerò domani mattina, ora del Pacifico: Redirecting…

Se vuoi pagare di più per averlo risolto stasera, invia una email a Jay@literatecomputing.com il prima possibile e potrei riuscire a riportarlo almeno online.

Questo è l’output dall’interfaccia web:

*** Si prega di avere pazienza, i prossimi passaggi potrebbero richiedere del tempo ***
********************************************************
Cycling Unicorn, per liberare memoria
Riavvio unicorn pid: 46
In attesa che Unicorn si ricarichi.
In attesa che Unicorn si ricarichi..
In attesa che Unicorn si ricarichi...
In attesa che Unicorn si ricarichi....
In attesa che Unicorn si ricarichi.....
In attesa che Unicorn si ricarichi......
In attesa che Unicorn si ricarichi.......
In attesa che Unicorn si ricarichi........
In attesa che Unicorn si ricarichi.........
In attesa che Unicorn si ricarichi..........
In attesa che Unicorn si ricarichi...........
In attesa che Unicorn si ricarichi............
Arresto 3 worker Unicorn, per liberare memoria
Arresto coda lavori per recuperare memoria, pid master è 10397
$ cd /var/www/discourse && git fetch --tags --force && git reset --hard HEAD@{upstream}
Da https://github.com/discourse/discourse
 t [aggiornamento tag]            latest-release -> latest-release
 * [nuovo tag]               v2.5.6         -> v2.5.6
Controllo file:  87% (2225/2539)  
Controllo file:  88% (2235/2539)  
Controllo file:  89% (2260/2539)  
Controllo file:  90% (2286/2539)  
Controllo file:  91% (2311/2539)  
Controllo file:  92% (2336/2539)  
Controllo file:  93% (2362/2539)  
Controllo file:  94% (2387/2539)  
Controllo file:  95% (2413/2539)  
Controllo file:  96% (2438/2539)  
Controllo file:  97% (2463/2539)  
Controllo file:  98% (2489/2539)  
Controllo file:  99% (2514/2539)  
Controllo file: 100% (2539/2539)  
Controllo file: 100% (2539/2539), fatto.
HEAD è ora a 0da649e4fa DEV: aggiungi nuovo outlet plugin al template tag (#12302)
$ bundle install --deployment --jobs 4 --without test development
[DEPRECATO] Il flag `--deployment` è deprecato perché si basa sulla memoria tra le invocazioni di bundler, che bundler non farà più nelle versioni future. Invece usa `bundle config set deployment 'true'`, e smetti di usare questo flag
[DEPRECATO] Il flag `--without` è deprecato perché si basa sulla memoria tra le invocazioni di bundler, che bundler non farà più nelle versioni future. Invece usa `bundle config set without 'test development'`, e smetti di usare questo flag
Attenzione: la versione in esecuzione di Bundler (2.1.4) è più vecchia della versione che ha creato il lockfile (2.2.7). Ti suggeriamo di aggiornare alla versione che ha creato il lockfile eseguendo `gem install bundler:2.2.7`.
Recupero metadati gem da https://rubygems.org/............
Recupero https://github.com/discourse/mail.git
Recupero rake 13.0.3
Installazione rake 13.0.3
Recupero concurrent-ruby 1.1.8
Recupero minitest 5.14.4
Uso thread_safe 0.3.6
Recupero zeitwerk 2.4.2
Installazione zeitwerk 2.4.2
Installazione minitest 5.14.4
Installazione concurrent-ruby 1.1.8
Uso builder 3.2.4
Uso erubi 1.10.0
Recupero racc 1.5.2
Uso crass 1.0.6
Uso rack 2.2.3
Uso mini_mime 1.0.2
Uso public_suffix 4.0.6
Recupero aws-eventstream 1.1.1
Installazione racc 1.5.2 con estensioni native
Installazione aws-eventstream 1.1.1
Uso aws-partitions 1.390.0
Uso jmespath 1.4.0
Uso ember-source 2.18.2
Uso execjs 2.7.0
Recupero msgpack 1.4.2
Installazione msgpack 1.4.2 con estensioni native
Uso bundler 2.1.4
Uso byebug 11.1.3
Uso cbor 0.5.9.6
Recupero chunky_png 1.4.0
Installazione chunky_png 1.4.0
Uso coderay 1.1.3
Uso colored2 3.1.2
Uso connection_pool 2.2.3
Uso cppjieba_rb 0.3.3
Uso diffy 3.4.0
Uso method_source 1.0.0
Recupero openssl 2.2.0
Recupero thor 1.1.0
Uso discourse-ember-source 3.12.2.2
Recupero discourse-fonts 0.0.7
Installazione thor 1.1.0
Installazione openssl 2.2.0 con estensioni native
Uso exifr 1.3.9
Uso fspath 3.1.2
Uso image_size 1.5.0
Uso in_threads 1.5.4
Uso progress 3.5.2
Uso email_reply_trimmer 0.1.13
Recupero excon 0.79.0
Installazione excon 0.79.0
Installazione discourse-fonts 0.0.7
Uso multipart-post 2.1.1
Recupero faraday-net_http 1.0.1
Recupero ruby2_keywords 0.0.4
Uso fast_blank 1.0.0
Uso fast_xs 0.8.0
Recupero fastimage 2.2.3
Installazione ruby2_keywords 0.0.4
Installazione faraday-net_http 1.0.1
Installazione fastimage 2.2.3
Recupero ffi 1.15.0
Uso gc_tracer 1.5.1
Uso guess_html_encoding 0.0.11
Uso hashie 4.1.0
Uso highline 2.0.3
Uso hkdf 0.3.0
Uso htmlentities 4.3.4
Uso http_accept_language 2.1.1
Recupero json 2.5.1
Uso jwt 2.2.2
Uso kgio 2.11.3
Uso libv8 8.4.255.0 (x86_64-linux)
Uso logstash-event 1.2.02
Recupero logster 2.9.6
Installazione json 2.5.1 con estensioni native
Installazione logster 2.9.6
Installazione ffi 1.15.0 con estensioni native
Uso lru_redux 1.1.0
Uso lz4-ruby 0.3.3
Uso maxminddb 0.1.22
Recupero memory_profiler 1.0.0
Installazione memory_profiler 1.0.0
Uso redis 4.2.5
Uso multi_json 1.15.0
Uso multi_xml 0.6.0
Uso mustache 1.1.1
Recupero mini_sql 1.0.1
Recupero nio4r 2.5.7
Installazione mini_sql 1.0.1
Installazione nio4r 2.5.7 con estensioni native
Recupero oauth 0.5.5
Recupero oj 3.11.2
Installazione oauth 0.5.5
Installazione oj 3.11.2 con estensioni native
Uso optimist 3.0.1
Uso pg 1.2.3
Uso r2 0.2.7
Uso raindrops 0.19.1
Uso rchardet 1.8.0
Uso rinku 2.0.6
Uso rotp 6.2.0
Recupero rqrcode_core 0.2.0
Uso rtlit 0.0.5
Uso rubyzip 2.3.0
Uso tilt 2.0.10
Uso sshkey 2.0.0
Uso stackprof 0.2.16
Uso unf_ext 0.0.7.7
Uso xorcist 1.1.2
Installazione rqrcode_core 0.2.0
Uso rack-test 1.1.0
Uso mail 2.8.0.edge da https://github.com/discourse/mail.git (a master@5b700fc)
Recupero tzinfo 1.2.9
Uso addressable 2.7.0
Uso request_store 1.5.0
Uso message_bus 3.3.4
Recupero rack-mini-profiler 2.3.1
Uso rack-protection 2.1.0
Uso aws-sigv4 1.2.2
Uso barber 0.12.2
Uso ember-data-source 3.0.2
Uso uglifier 4.2.0
Recupero i18n 1.8.9
Installazione i18n 1.8.9
Installazione tzinfo 1.2.9
Installazione rack-mini-profiler 2.3.1
Uso sprockets 3.7.2
Recupero bootsnap 1.7.2
Installazione bootsnap 1.7.2 con estensioni native
Uso pry 0.13.1
Uso discourse_image_optim 0.26.2
Recupero nokogiri 1.11.1 (x86_64-linux)
Recupero openssl-signature_algorithm 1.1.1
Recupero faraday 1.3.0
Installazione openssl-signature_algorithm 1.1.1
Installazione faraday 1.3.0
Uso omniauth 1.9.1
Uso logstash-logger 0.26.1
Uso mini_racer 0.3.1
Uso webpush 1.1.0
Recupero sidekiq 6.1.3
Installazione sidekiq 6.1.3
Recupero redis-namespace 1.8.1
Installazione nokogiri 1.11.1 (x86_64-linux)
Installazione redis-namespace 1.8.1
Recupero mini_suffix 0.3.2
Installazione mini_suffix 0.3.2
Uso sassc 2.0.1
Uso rbtrace 0.4.14
Recupero unicorn 5.8.0
Recupero puma 5.2.2
Installazione unicorn 5.8.0 con estensioni native
Installazione puma 5.2.2 con estensioni native
Uso unf 0.1.4
Recupero rqrcode 1.2.0
Recupero css_parser 1.9.0
Uso aws-sdk-core 3.109.2
Uso ember-handlebars-template 0.8.0
Uso pry-byebug 3.9.0
Uso pry-rails 0.3.9
Recupero activesupport 6.0.3.5
Installazione css_parser 1.9.0
Installazione rqrcode 1.2.0
Installazione activesupport 6.0.3.5
Uso cose 1.2.0
Recupero omniauth-oauth 1.2.0
Installazione omniauth-oauth 1.2.0
Uso oauth2 1.4.4
Recupero mini_scheduler 0.13.0
Recupero loofah 2.9.0
Installazione mini_scheduler 0.13.0
Installazione loofah 2.9.0
Recupero nokogumbo 2.0.4
Uso ruby-readability 0.7.0
Uso aws-sdk-kms 1.39.0
Uso aws-sdk-sns 1.35.0
Recupero omniauth-oauth2 1.7.1
Installazione nokogumbo 2.0.4 con estensioni native
Installazione omniauth-oauth2 1.7.1
Uso omniauth-twitter 1.4.0
Uso rails-html-sanitizer 1.3.0
Uso aws-sdk-s3 1.83.2
Uso omniauth-facebook 8.0.0
Uso omniauth-github 1.4.0
Recupero omniauth-google-oauth2 0.8.1
Installazione omniauth-google-oauth2 0.8.1
Uso rails-dom-testing 2.0.3
Uso globalid 0.4.2
Recupero actionview 6.0.3.5
Recupero activemodel 6.0.3.5
Recupero activejob 6.0.3.5
Installazione activejob 6.0.3.5
Installazione activemodel 6.0.3.5
Installazione actionview 6.0.3.5
Recupero sanitize 5.2.3
Installazione sanitize 5.2.3
Uso active_model_serializers 0.8.4
Recupero activerecord 6.0.3.5
Recupero onebox 2.2.6
Installazione activerecord 6.0.3.5
Installazione onebox 2.2.6
Recupero actionpack 6.0.3.5
Installazione actionpack 6.0.3.5
Uso actionview_precompiler 0.2.3
Recupero railties 6.0.3.5
Recupero actionmailer 6.0.3.5
Installazione actionmailer 6.0.3.5
Installazione railties 6.0.3.5
Uso sprockets-rails 3.2.2
Uso seed-fu 2.3.9
Uso jquery-rails 4.4.0
Uso lograge 0.11.2
Recupero rails_failover 0.6.5
Uso rails_multisite 2.5.0
Uso sassc-rails 2.1.2
Uso discourse-ember-rails 0.18.6
Installazione rails_failover 0.6.5
Bundle completo! 124 dipendenze Gemfile, 162 gem installate.
Le gem nei gruppi test e development non sono state installate.
Le gem bundled sono installate in `./vendor/bundle`
$ bundle exec rake plugin:pull_compatible_all
discourse-legal-tools è già alla versione compatibile più recente
docker_manager è già alla versione compatibile più recente
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate

--------------------------------------------------------------------------------
1 migrazioni fallite!

Fallita migrazione default
#<StandardError: Si è verificato un errore, questa e tutte le migrazioni successive sono state annullate:

PG::UniqueViolation: ERRORE:  il valore della chiave duplicata viola il vincolo univoco "index_users_on_username"
DETTAGLI:  La chiave (username)=(Martina_S) esiste già.
>
/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'

Il migratore multisite è in esecuzione usando 1 thread

Migrazione default
== 20201117212328 SetCategorySlugToLower: migrazione in corso ===========================
-- 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: migrato (0.0528s) ==================

== 20201210151635 CreateDoNotDisturbTimings: migrazione in corso ========================
-- 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: migrato (0.0296s) ===============

== 20201218000000 RemoveFlagWebHooks: migrazione in corso ===============================
-- 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: migrato (0.0016s) ======================

== 20201218000001 RemoveQueuedPostWebHooks: migrazione in corso =========================
-- 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: migrato (0.0011s) ================

== 20201229031635 AddUserProfileIndexes: migrazione in corso ============================
-- 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: migrato (1.0231s) ===================

== 20210105165605 AddProcessedToNotifications: migrazione in corso ======================
== 20210105165605 AddProcessedToNotifications: migrato (0.0007s) =============

== 20210106181418 CreateUserNotificationSchedules: migrazione in corso ==================
-- 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: migrato (0.0134s) =========

== 20210107005832 AddImapMissingColumnToIncomingEmail: migrazione in corso ==============
-- add_column(:incoming_emails, :imap_missing, :boolean, {:default=>false, :null=>false})
   -> 0.0013s
== 20210107005832 AddImapMissingColumnToIncomingEmail: migrato (0.0019s) =====

== 20210111025920 AddRejectReasonToReviewables: migrazione in corso =====================
-- add_column(:reviewables, :reject_reason, :text)
   -> 0.0008s
== 20210111025920 AddRejectReasonToReviewables: migrato (0.0015s) ============

== 20210119005647 AddCreatedViaToIncomingEmail: migrazione in corso =====================
-- add_column(:incoming_emails, :created_via, :integer, {:null=>true})
   -> 0.0006s
== 20210119005647 AddCreatedViaToIncomingEmail: migrato (0.0012s) ============

== 20210120125607 RenameEnglishLocale: migrazione in corso ==============================
-- 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 Manager: AGGIORNAMENTO FALLITO
#<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>'
Avvio 3 worker Unicorn che erano stati fermati inizialmente

Ho quindi eseguito l’aggiornamento via SSH, sperando che fosse più robusto (nel 2020 ci sono stati alcuni mesi in cui l’interfaccia web si rifiutava di aggiornare qualsiasi cosa e dovevo sempre passare via SSH). Quando ho digitato il comando di aggiornamento sulla riga di comando, ha scaricato un mucchio di roba e alla fine mi ha detto di eseguire il comando rebuild app. Quando l’ho fatto, si è verificato lo stesso errore. Non posso attestare se le righe circostanti fossero le stesse e non le ho copiate, ma sicuramente aveva questo problema index_username_on_users in mezzo alle migrazioni del database.

TL;DR: Se interpreto correttamente l’output, il problema si è verificato nella migrazione RenameEnglishLocale sul comando execute("UPDATE users SET locale = 'en' WHERE locale = 'en_US'").

Ho già visto questo errore in passato: si verifica quando c’è una corruzione interna nella tabella users.

In qualche modo è presente un record “user” duplicato nella tabella, entrato in una versione precedente, durante un aggiornamento o a causa di un arresto improvviso. Non so ancora esattamente perché accada, ma l’ho già visto succedere.

Hai due alternative:

  1. Se sei fortunato, esegui ./launcher start app, poi rails c, quindi DB.query('select * from users where username='Martina_S') e rinomina l’ultimo Martina_S in qualcosa come Martina_S1.

  2. Se non sei fortunato, non riuscirai ad avviare l’app; in tal caso dovrai avviare un contenitore dati ed eseguire quanto sopra da psql.

Grazie per le tue rapide risposte! Come avvio un contenitore dati? Ho provato ./launcher start app e poi rails c, ma Rails non si avvia perché il database non è in esecuzione. Ho provato /etc/init.d/postgresql restart ma ho ricevuto l’errore che vedi nel post iniziale, qualcosa relativo all’incompatibilità della versione di PostgreSQL (Debian LTS supporta solo la versione 12.x, mentre il recente aggiornamento di Discourse sembra aver migrato i miei dati alla versione 13.0??). Sarei disposto a risolvere il problema direttamente in SQL, dopo tutto sono uno sviluppatore Rails, ma non ho idea di come correggere quello che sembra un aggiornamento di PostgreSQL andato male da riga di comando Linux.

Cerca nella directory sample un esempio di contenitore di dati

Devi solo indicizzarlo nella posizione corretta, quindi dovresti essere in grado di accedere al contenitore ed eseguire psql

Sì, sei già stato aggiornato alla versione 13

@pfaffman l’ha sistemato. Consiglio questo tizio :slight_smile: