Quando estiver dentro do contêiner, como usuário do discourse, no diretório raiz do discourse, você pode executar bin/rails db para se conectar ao banco de dados correto.
Olá ![]()
Eu também encontrei esse problema durante a reconstrução. A única maneira de colocar o site de volta no ar foi reverter para um commit anterior. Depois de reverter para um commit funcional, encontrei este tópico e executei as consultas. Espero que os resultados ainda sejam úteis para identificar a causa raiz.
Consulta #1
table_schema | column_name | column_default
--------------+---------------------------+----------------
backup | discourse_rewind_disabled | false
public | discourse_rewind_disabled | false
(2 rows)
Consulta #2
nspname | oid
---------+-------
public | 2200
backup | 22997
(2 rows)
Consulta #3
table_schema | has_default
--------------+-------------
backup | t
public | t
(2 rows)
Consulta #4
nspname | oid
---------------------+-------
discourse_functions | 19411
backup | 22997
(2 rows)
Obrigado por executar essas consultas, @Don - você confirmou a causa raiz ![]()
Seus resultados mostram exatamente o que suspeitávamos
- Você tem um esquema
backupcom uma cópia deuser_options - Essa tabela ainda tem o padrão antigo (
column_default = false) - A linha
backupapareceu antes depublicnos resultados da consulta
Quando a migração removeu o padrão de public.user_options, ela não tocou em backup.user_options. Então, mark_readonly consultou information_schema.columns sem filtrar por esquema, obteve a linha backup primeiro (que ainda tinha o padrão) e falhou ![]()
A correção é simplesmente adicionar table_schema = 'public' à consulta para que ela verifique apenas o esquema em que as migrações realmente operam.
Obrigado pela correção! Tudo funciona perfeitamente agora para mim ![]()
Sinto muito, tive um problema antes de entrar no banco de dados e não consegui fornecer os resultados da consulta, mas felizmente o Don já deu um retorno.
discourse@jerry-app:/var/www/discourse$ bin/rails db
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:71:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'debug/prelude'. (Bundler::GemRequireError)
Gem Load Error is: cannot load such file -- debug/prelude
Backtrace for gem load error is:
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:63:in `block (2 levels) in require'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:58:in `each'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:58:in `block in require'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:52:in `each'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:52:in `require'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler.rb:215:in `require'
/var/www/discourse/config/application.rb:55:in `<main>'
/usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
/usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.19.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/actions.rb:15:in `require_application!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/environment_argument.rb:31:in `require_application!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/actions.rb:19:in `boot_application!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/commands/dbconsole/dbconsole_command.rb:83:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/base.rb:178:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor.rb:538:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/base.rb:73:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command.rb:65:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command.rb:143:in `with_argv'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command.rb:63:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/commands.rb:18:in `<main>'
Bundler Error Backtrace:
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:62:in `block (2 levels) in require'
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:58:in `each'
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:58:in `block in require'
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:52:in `each'
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:52:in `require'
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler.rb:215:in `require'
from /var/www/discourse/config/application.rb:55:in `<main>'
from /usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
from /usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.19.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/actions.rb:15:in `require_application!'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/environment_argument.rb:31:in `require_application!'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/actions.rb:19:in `boot_application!'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/commands/dbconsole/dbconsole_command.rb:83:in `perform'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/command.rb:28:in `run'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/invocation.rb:127:in `invoke_command'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/base.rb:178:in `invoke_command'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor.rb:538:in `dispatch'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/base.rb:73:in `perform'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command.rb:65:in `block in invoke'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command.rb:143:in `with_argv'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command.rb:63:in `invoke'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/commands.rb:18:in `<main>'
from /usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
from /usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.19.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
from bin/rails:18:in `<main>'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require': cannot load such file -- debug/prelude (LoadError)
from <internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
from /usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:63:in `block (2 levels) in require'
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:58:in `each'
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:58:in `block in require'
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:52:in `each'
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:52:in `require'
from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler.rb:215:in `require'
from /var/www/discourse/config/application.rb:55:in `<main>'
from /usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
from /usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.19.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/actions.rb:15:in `require_application!'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/environment_argument.rb:31:in `require_application!'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/actions.rb:19:in `boot_application!'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/commands/dbconsole/dbconsole_command.rb:83:in `perform'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/command.rb:28:in `run'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/invocation.rb:127:in `invoke_command'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/base.rb:178:in `invoke_command'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor.rb:538:in `dispatch'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command/base.rb:73:in `perform'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command.rb:65:in `block in invoke'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command.rb:143:in `with_argv'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/command.rb:63:in `invoke'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.4/lib/rails/commands.rb:18:in `<main>'
from /usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
from /usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.19.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
from bin/rails:18:in `<main>'
discourse@jerry-app:/var/www/discourse$
Mas como devo resolver esse problema de entrar no banco de dados? ![]()
Eu verifiquei seguindo o processo abaixo:
# 1. Ver a localização de debug no Gemfile
grep -n debug /var/www/discourse/Gemfile
# 2. Ver se application.rb requer diretamente
grep -n debug /var/www/discourse/config/application.rb
# 3. Ver se foi introduzido por um plugin
find /var/www/discourse/plugins -name '*.rb' -exec grep -l debug {} \;
Os resultados retornados são:
discourse@jerry-app:~$ grep -n debug /var/www/discourse/Gemfile
147: gem "debug", ">= 1.0.0", require: "debug/prelude"
discourse@jerry-app:~$ grep -n debug /var/www/discourse/config/application.rb
discourse@jerry-app:~$ find /var/www/discourse/plugins -name '*.rb' -exec grep -l debug {} \;
/var/www/discourse/plugins/chat/app/controllers/chat/incoming_webhooks_controller.rb
/var/www/discourse/plugins/chat/app/jobs/regular/chat/channel_delete.rb
/var/www/discourse/plugins/chat/spec/requests/chat/incoming_webhooks_controller_spec.rb
/var/www/discourse/plugins/automation/lib/discourse_automation/triggers/recurring.rb
/var/www/discourse/plugins/discourse-oauth2-basic/lib/oauth2_basic_authenticator.rb
/var/www/discourse/plugins/discourse-ai/app/controllers/discourse_ai/admin/ai_llms_controller.rb
/var/www/discourse/plugins/discourse-ai/app/controllers/discourse_ai/ai_bot/bot_controller.rb
/var/www/discourse/plugins/discourse-ai/evals/lib/recorder.rb
/var/www/discourse/plugins/discourse-ai/evals/lib/prompts/single_test_runner.rb
/var/www/discourse/plugins/discourse-ai/discourse_automation/llm_report.rb
/var/www/discourse/plugins/discourse-ai/lib/automation/llm_tagger.rb
/var/www/discourse/plugins/discourse-ai/lib/automation/report_runner.rb
/var/www/discourse/plugins/discourse-ai/lib/ai_bot/response_http_streamer.rb
/var/www/discourse/plugins/discourse-ai/lib/ai_bot/entry_point.rb
/var/www/discourse/plugins/discourse-ai/lib/guardian_extensions.rb
/var/www/discourse/plugins/discourse-ai/config/routes.rb
/var/www/discourse/plugins/discourse-ai/spec/requests/ai_bot/bot_controller_spec.rb
/var/www/discourse/plugins/discourse-ai/spec/lib/modules/automation/report_runner_spec.rb
/var/www/discourse/plugins/discourse-ai/spec/lib/modules/ai_bot/entry_point_spec.rb
/var/www/discourse/plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb
Eu usei a instalação do discourse via docker (sem instalar nenhum plugin), instalei o mysql no contêiner, importei o banco de dados do xenforo e usei o script de migração para migrar do xenforo para o discourse. Durante esse processo, devo ter modificado a configuração do Gemfile no contêiner. Após a migração ser bem-sucedida, realizei várias reconstruções (rebuilds) para atualização.
Minha dúvida é: por que ainda tenho problemas ao executar bin/rails db mesmo depois de ter feito várias reconstruções e atualizações no discourse?
Obrigado.
Feedback mais recente: reinstalei o sistema operacional, reimplantei o Discourse e importei o backup. O erro ainda está ocorrendo.