¡Ayuda! La actualización provocó un fallo total

Hola,

Al ejecutar la actualización más reciente (de algo 6 a 7), el comando rake db:migrate falló debido a un supuesto nombre de usuario duplicado. Como no me siento muy cómodo con la línea de comandos de Linux, intenté entrar en la consola de Rails para solucionarlo, pero la consola no se carga porque no puede conectarse a la base de datos. Luego busqué en Google e intenté ejecutar /etc/init.d/postgresql restart, pero falló con el siguiente mensaje:

[....] Reiniciando servidor de base de datos PostgreSQL 12: main[....] 
Error: /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" salió con estado 1: 2021-03-08 20:19:10.354 UTC [763] 
FATAL: los archivos de la base de datos son incompatibles con el servidor 2021-03-08 20:19:10.354 UTC [763] 
DETALLE: El directorio de datos fue inicializado por PostgreSQL versión 13, que no es compatible con esta versión 12.3 (Debian 12.3-1.pgdg100+1). p[ERROR: no se pudo iniciar el servidor. Examine la salida del registro. ... falló!
 falló!

Luego intenté /etc/init.d/postgresql restart version 12.3, lo cual no dio ningún error, pero tampoco mostró ningún otro mensaje. Y aún es imposible iniciar sesión en psql (al menos usando sudo -u postgres psql discourse, que encontré en este foro).

¿Alguien puede aconsejar cómo restaurar el servidor? ¿Y por qué la última actualización causó un error tan grande? Utilicé la instalación de 30 minutos, todo está lo más estándar posible. También estoy dispuesto a pagarle a alguien para que lo solucione.

@pfaffman se especializa en este tipo de soporte, quizás puedas contactarlo.

¿Tienes el error exacto? Puede que necesites hacer un poco de desplazamiento, pero me interesa saber:

  1. El nombre de la migración que falló
  2. La instrucción que provocó el fallo

Hubo un error en algún punto que permitía nombres de usuario con diferente capitalización. Luego se corrigió para que ya no lo permitiera.

Quizás puedas levantar el contenedor antiguo y solucionarlo con la interfaz de usuario.

Pero si no has realizado una actualización por línea de comandos desde hace un tiempo, también hay una actualización de la base de datos, lo que complica aún más las cosas.

Si no es mucho peor que eso, lo arreglaré mañana por la mañana, hora del Pacífico: Redirecting…

Si quieres pagar más para que se resuelva esta noche, envía un correo a Jay@literatecomputing.com pronto y tal vez pueda al menos restablecerlo.

Este es el resultado de la interfaz web:

*** Por favor, sea paciente, los siguientes pasos pueden tardar un poco ***
********************************************************
Reciclando Unicorn para liberar memoria
Reiniciando unicorn pid: 46
Esperando a que Unicorn se recargue.
Esperando a que Unicorn se recargue..
Esperando a que Unicorn se recargue...
Esperando a que Unicorn se recargue....
Esperando a que Unicorn se recargue.....
Esperando a que Unicorn se recargue......
Esperando a que Unicorn se recargue.......
Esperando a que Unicorn se recargue........
Esperando a que Unicorn se recargue.........
Esperando a que Unicorn se recargue..........
Esperando a que Unicorn se recargue...........
Esperando a que Unicorn se recargue............
Deteniendo 3 trabajador(es) de Unicorn para liberar memoria
Deteniendo cola de trabajos para recuperar memoria, pid del maestro es 10397
$ cd /var/www/discourse && git fetch --tags --force && git reset --hard HEAD@{upstream}
From https://github.com/discourse/discourse
 t [tag update]            latest-release -> latest-release
 * [new tag]               v2.5.6         -> v2.5.6
Extrayendo archivos:  87% (2225/2539)  
Extrayendo archivos:  88% (2235/2539)  
Extrayendo archivos:  89% (2260/2539)  
Extrayendo archivos:  90% (2286/2539)  
Extrayendo archivos:  91% (2311/2539)  
Extrayendo archivos:  92% (2336/2539)  
Extrayendo archivos:  93% (2362/2539)  
Extrayendo archivos:  94% (2387/2539)  
Extrayendo archivos:  95% (2413/2539)  
Extrayendo archivos:  96% (2438/2539)  
Extrayendo archivos:  97% (2463/2539)  
Extrayendo archivos:  98% (2489/2539)  
Extrayendo archivos:  99% (2514/2539)  
Extrayendo archivos: 100% (2539/2539)  
Extrayendo archivos: 100% (2539/2539), hecho.
HEAD está ahora en 0da649e4fa DEV: agregar nueva salida de plugin a la plantilla de etiquetas (#12302)
$ bundle install --deployment --jobs 4 --without test development
[OBSOLETO] La bandera `--deployment` está obsoleta porque depende de ser recordada entre invocaciones de bundler, lo cual bundler ya no hará en versiones futuras. En su lugar, use `bundle config set deployment 'true'`, y deje de usar esta bandera
[OBSOLETO] La bandera `--without` está obsoleta porque depende de ser recordada entre invocaciones de bundler, lo cual bundler ya no hará en versiones futuras. En su lugar, use `bundle config set without 'test development'`, y deje de usar esta bandera
Advertencia: la versión en ejecución de Bundler (2.1.4) es anterior a la versión que creó el archivo de bloqueo (2.2.7). Le sugerimos que actualice a la versión que creó el archivo de bloqueo ejecutando `gem install bundler:2.2.7`.
Obteniendo metadatos de gemas de https://rubygems.org/............
Obteniendo https://github.com/discourse/mail.git
Obteniendo rake 13.0.3
Instalando rake 13.0.3
Obteniendo concurrent-ruby 1.1.8
Obteniendo minitest 5.14.4
Usando thread_safe 0.3.6
Obteniendo zeitwerk 2.4.2
Instalando zeitwerk 2.4.2
Instalando minitest 5.14.4
Instalando concurrent-ruby 1.1.8
Usando builder 3.2.4
Usando erubi 1.10.0
Obteniendo racc 1.5.2
Usando crass 1.0.6
Usando rack 2.2.3
Usando mini_mime 1.0.2
Usando public_suffix 4.0.6
Obteniendo aws-eventstream 1.1.1
Instalando racc 1.5.2 con extensiones nativas
Instalando aws-eventstream 1.1.1
Usando aws-partitions 1.390.0
Usando jmespath 1.4.0
Usando ember-source 2.18.2
Usando execjs 2.7.0
Obteniendo msgpack 1.4.2
Instalando msgpack 1.4.2 con extensiones nativas
Usando bundler 2.1.4
Usando byebug 11.1.3
Usando cbor 0.5.9.6
Obteniendo chunky_png 1.4.0
Instalando chunky_png 1.4.0
Usando coderay 1.1.3
Usando colored2 3.1.2
Usando connection_pool 2.2.3
Usando cppjieba_rb 0.3.3
Usando diffy 3.4.0
Usando method_source 1.0.0
Obteniendo openssl 2.2.0
Obteniendo thor 1.1.0
Usando discourse-ember-source 3.12.2.2
Obteniendo discourse-fonts 0.0.7
Instalando thor 1.1.0
Instalando openssl 2.2.0 con extensiones nativas
Usando exifr 1.3.9
Usando fspath 3.1.2
Usando image_size 1.5.0
Usando in_threads 1.5.4
Usando progress 3.5.2
Usando email_reply_trimmer 0.1.13
Obteniendo excon 0.79.0
Instalando excon 0.79.0
Instalando discourse-fonts 0.0.7
Usando multipart-post 2.1.1
Obteniendo faraday-net_http 1.0.1
Obteniendo ruby2_keywords 0.0.4
Usando fast_blank 1.0.0
Usando fast_xs 0.8.0
Obteniendo fastimage 2.2.3
Instalando ruby2_keywords 0.0.4
Instalando faraday-net_http 1.0.1
Instalando fastimage 2.2.3
Obteniendo ffi 1.15.0
Usando gc_tracer 1.5.1
Usando guess_html_encoding 0.0.11
Usando hashie 4.1.0
Usando highline 2.0.3
Usando hkdf 0.3.0
Usando htmlentities 4.3.4
Usando http_accept_language 2.1.1
Obteniendo json 2.5.1
Usando jwt 2.2.2
Usando kgio 2.11.3
Usando libv8 8.4.255.0 (x86_64-linux)
Usando logstash-event 1.2.02
Obteniendo logster 2.9.6
Instalando json 2.5.1 con extensiones nativas
Instalando logster 2.9.6
Instalando ffi 1.15.0 con extensiones nativas
Usando lru_redux 1.1.0
Usando lz4-ruby 0.3.3
Usando maxminddb 0.1.22
Obteniendo memory_profiler 1.0.0
Instalando memory_profiler 1.0.0
Usando redis 4.2.5
Usando multi_json 1.15.0
Usando multi_xml 0.6.0
Usando mustache 1.1.1
Obteniendo mini_sql 1.0.1
Obteniendo nio4r 2.5.7
Instalando mini_sql 1.0.1
Instalando nio4r 2.5.7 con extensiones nativas
Obteniendo oauth 0.5.5
Obteniendo oj 3.11.2
Instalando oauth 0.5.5
Instalando oj 3.11.2 con extensiones nativas
Usando optimist 3.0.1
Usando pg 1.2.3
Usando r2 0.2.7
Usando raindrops 0.19.1
Usando rchardet 1.8.0
Usando rinku 2.0.6
Usando rotp 6.2.0
Obteniendo rqrcode_core 0.2.0
Usando rtlit 0.0.5
Usando rubyzip 2.3.0
Usando tilt 2.0.10
Usando sshkey 2.0.0
Usando stackprof 0.2.16
Usando unf_ext 0.0.7.7
Usando xorcist 1.1.2
Instalando rqrcode_core 0.2.0
Usando rack-test 1.1.0
Usando mail 2.8.0.edge desde https://github.com/discourse/mail.git (en master@5b700fc)
Obteniendo tzinfo 1.2.9
Usando addressable 2.7.0
Usando request_store 1.5.0
Usando message_bus 3.3.4
Obteniendo rack-mini-profiler 2.3.1
Usando rack-protection 2.1.0
Usando aws-sigv4 1.2.2
Usando barber 0.12.2
Usando ember-data-source 3.0.2
Usando uglifier 4.2.0
Obteniendo i18n 1.8.9
Instalando i18n 1.8.9
Instalando tzinfo 1.2.9
Instalando rack-mini-profiler 2.3.1
Usando sprockets 3.7.2
Obteniendo bootsnap 1.7.2
Instalando bootsnap 1.7.2 con extensiones nativas
Usando pry 0.13.1
Usando discourse_image_optim 0.26.2
Obteniendo nokogiri 1.11.1 (x86_64-linux)
Obteniendo openssl-signature_algorithm 1.1.1
Obteniendo faraday 1.3.0
Instalando openssl-signature_algorithm 1.1.1
Instalando faraday 1.3.0
Usando omniauth 1.9.1
Usando logstash-logger 0.26.1
Usando mini_racer 0.3.1
Usando webpush 1.1.0
Obteniendo sidekiq 6.1.3
Instalando sidekiq 6.1.3
Obteniendo redis-namespace 1.8.1
Instalando nokogiri 1.11.1 (x86_64-linux)
Instalando redis-namespace 1.8.1
Obteniendo mini_suffix 0.3.2
Instalando mini_suffix 0.3.2
Usando sassc 2.0.1
Usando rbtrace 0.4.14
Obteniendo unicorn 5.8.0
Obteniendo puma 5.2.2
Instalando unicorn 5.8.0 con extensiones nativas
Instalando puma 5.2.2 con extensiones nativas
Usando unf 0.1.4
Obteniendo rqrcode 1.2.0
Obteniendo css_parser 1.9.0
Usando aws-sdk-core 3.109.2
Usando ember-handlebars-template 0.8.0
Usando pry-byebug 3.9.0
Usando pry-rails 0.3.9
Obteniendo activesupport 6.0.3.5
Instalando css_parser 1.9.0
Instalando rqrcode 1.2.0
Instalando activesupport 6.0.3.5
Usando cose 1.2.0
Obteniendo omniauth-oauth 1.2.0
Instalando omniauth-oauth 1.2.0
Usando oauth2 1.4.4
Obteniendo mini_scheduler 0.13.0
Obteniendo loofah 2.9.0
Instalando mini_scheduler 0.13.0
Instalando loofah 2.9.0
Obteniendo nokogumbo 2.0.4
Usando ruby-readability 0.7.0
Usando aws-sdk-kms 1.39.0
Usando aws-sdk-sns 1.35.0
Obteniendo omniauth-oauth2 1.7.1
Instalando nokogumbo 2.0.4 con extensiones nativas
Instalando omniauth-oauth2 1.7.1
Usando omniauth-twitter 1.4.0
Usando rails-html-sanitizer 1.3.0
Usando aws-sdk-s3 1.83.2
Usando omniauth-facebook 8.0.0
Usando omniauth-github 1.4.0
Obteniendo omniauth-google-oauth2 0.8.1
Instalando omniauth-google-oauth2 0.8.1
Usando rails-dom-testing 2.0.3
Usando globalid 0.4.2
Obteniendo actionview 6.0.3.5
Obteniendo activemodel 6.0.3.5
Obteniendo activejob 6.0.3.5
Instalando activejob 6.0.3.5
Instalando activemodel 6.0.3.5
Instalando actionview 6.0.3.5
Obteniendo sanitize 5.2.3
Instalando sanitize 5.2.3
Usando active_model_serializers 0.8.4
Obteniendo activerecord 6.0.3.5
Obteniendo onebox 2.2.6
Instalando activerecord 6.0.3.5
Instalando onebox 2.2.6
Obteniendo actionpack 6.0.3.5
Instalando actionpack 6.0.3.5
Usando actionview_precompiler 0.2.3
Obteniendo railties 6.0.3.5
Obteniendo actionmailer 6.0.3.5
Instalando actionmailer 6.0.3.5
Instalando railties 6.0.3.5
Usando sprockets-rails 3.2.2
Usando seed-fu 2.3.9
Usando jquery-rails 4.4.0
Usando lograge 0.11.2
Obteniendo rails_failover 0.6.5
Usando rails_multisite 2.5.0
Usando sassc-rails 2.1.2
Usando discourse-ember-rails 0.18.6
Instalando rails_failover 0.6.5
¡Paquete completo! 124 dependencias de Gemfile, 162 gemas instaladas ahora.
Las gemas en los grupos test y development no fueron instaladas.
Las gemas empaquetadas están instaladas en `./vendor/bundle`
$ bundle exec rake plugin:pull_compatible_all
discourse-legal-tools ya está en la última versión compatible
docker_manager ya está en la última versión compatible
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate

--------------------------------------------------------------------------------
¡1 migración falló!

Error al migrar default
#<StandardError: Ha ocurrido un error, esta y todas las migraciones posteriores fueron canceladas:

PG::UniqueViolation: ERROR:  el valor de clave duplicada viola la restricción única "index_users_on_username"
DETALLE:  La clave (username)=(Martina_S) ya existe.
>
/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'

El migrador multisite está ejecutándose usando 1 hilos

Migrando default
== 20201117212328 SetCategorySlugToLower: migrando ===========================
-- 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: migrado (0.0528s) ==================

== 20201210151635 CreateDoNotDisturbTimings: migrando ========================
-- 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: migrado (0.0296s) ===============

== 20201218000000 RemoveFlagWebHooks: migrando ===============================
-- 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: migrado (0.0016s) ======================

== 20201218000001 RemoveQueuedPostWebHooks: migrando =========================
-- 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: migrado (0.0011s) ================

== 20201229031635 AddUserProfileIndexes: migrando ============================
-- 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: migrado (1.0231s) ===================

== 20210105165605 AddProcessedToNotifications: migrando ======================
== 20210105165605 AddProcessedToNotifications: migrado (0.0007s) =============

== 20210106181418 CreateUserNotificationSchedules: migrando ==================
-- 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: migrado (0.0134s) =========

== 20210107005832 AddImapMissingColumnToIncomingEmail: migrando ==============
-- add_column(:incoming_emails, :imap_missing, :boolean, {:default=>false, :null=>false})
   -> 0.0013s
== 20210107005832 AddImapMissingColumnToIncomingEmail: migrado (0.0019s) =====

== 20210111025920 AddRejectReasonToReviewables: migrando =====================
-- add_column(:reviewables, :reject_reason, :text)
   -> 0.0008s
== 20210111025920 AddRejectReasonToReviewables: migrado (0.0015s) ============

== 20210119005647 AddCreatedViaToIncomingEmail: migrando =====================
-- add_column(:incoming_emails, :created_via, :integer, {:null=>true})
   -> 0.0006s
== 20210119005647 AddCreatedViaToIncomingEmail: migrado (0.0012s) ============

== 20210120125607 RenameEnglishLocale: migrando ==============================
-- 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: ERROR AL ACTUALIZAR
#<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>'
Iniciando 3 trabajador(es) de Unicorn que se detuvieron inicialmente

Luego ejecuté la actualización vía SSH, con la esperanza de que fuera más robusto (en 2020 hubo unos meses en que la interfaz web se negó a actualizar cualquier cosa y siempre tuve que hacerlo vía SSH). Cuando escribí el comando de actualización en la línea de comandos, descargó un montón de cosas y finalmente me dijo que ejecutara el comando rebuild app. Cuando lo hice, ocurrió el mismo error. No puedo confirmar si las líneas circundantes eran las mismas y no las copié, pero definitivamente tenía este problema de index_username_on_users en medio de las migraciones de la base de datos.

TL;DR: Si interpreto correctamente la salida, el problema ocurrió en la migración RenameEnglishLocale en el comando execute("UPDATE users SET locale = 'en' WHERE locale = 'en_US'").

He visto este error antes; ocurre cuando hay una corrupción interna en la tabla de usuarios.

De alguna manera, tienes un registro duplicado de “user” en la tabla; se coló en una versión anterior, durante una actualización o tras un apagado abrupto. Aún no sé exactamente por qué ocurre, pero lo he visto suceder.

Tienes dos alternativas:

  1. Si tienes suerte, ejecuta ./launcher start app, luego rails c, después DB.query('select * from users where username='Martina_S') y renombra el último Martina_S a algo como Martina_S1.

  2. Si no tienes suerte, no podrás iniciar la aplicación; en ese caso, deberás arrancar un contenedor de datos y ejecutar lo anterior desde psql.

¡Gracias por tus respuestas rápidas! ¿Cómo inicio un contenedor de datos? Intenté ./launcher start app y luego rails c, pero Rails no se inicia porque la base de datos no está funcionando. Intenté /etc/init.d/postgresql restart pero obtuve el error que ves en el post inicial, algo sobre la versión de PostgreSQL siendo incompatible (Debian LTS solo soporta 12.x, mientras que la última actualización de Discourse parece haber migrado mis datos a 13.0??). Me gustaría arreglar esto en SQL, después de todo soy desarrollador de Rails, pero no tengo idea de cómo solucionar lo que parece ser una actualización fallida de PostgreSQL en la línea de comandos de Linux.

Busca en el directorio de ejemplos un contenedor de datos de ejemplo.

Solo necesitas apuntar a la ubicación correcta; luego, deberías poder entrar al contenedor y ejecutar psql.

Sí, ya has sido actualizado a la versión 13.

@pfaffman lo solucionó. Recomiendo a este tipo :slight_smile: