Une fois à l’intérieur du conteneur, en tant qu’utilisateur de Discourse, à la racine du répertoire Discourse, vous pouvez exécuter bin/rails db pour vous connecter à la bonne base de données.
Bonjour ![]()
J’ai également rencontré ce problème lors de la reconstruction. La seule façon de remettre le site en ligne a été de revenir à un commit précédent. Après être revenu à un commit fonctionnel, j’ai trouvé ce sujet et exécuté les requêtes. J’espère que les résultats sont toujours utiles pour identifier la cause première.
Requête n°1
table_schema | column_name | column_default
--------------+---------------------------+----------------
backup | discourse_rewind_disabled | false
public | discourse_rewind_disabled | false
(2 rows)
Requête n°2
nspname | oid
---------+-------
public | 2200
backup | 22997
(2 rows)
Requête n°3
table_schema | has_default
--------------+-------------
backup | t
public | t
(2 rows)
Requête n°4
nspname | oid
---------------------+-------
discourse_functions | 19411
backup | 22997
(2 rows)
Merci d’avoir exécuté ces requêtes @Don - vous avez confirmé la cause première ![]()
Vos résultats montrent exactement ce que nous soupçonnions
- Vous avez un schéma
backupavec une copie deuser_options - Cette table a toujours la valeur par défaut précédente (
column_default = false) - La ligne
backupest apparue avantpublicdans les résultats de la requête
Lorsque la migration a supprimé la valeur par défaut sur public.user_options, elle n’a pas touché backup.user_options. Ensuite, mark_readonly a interrogé information_schema.columns sans filtrer par schéma, a obtenu la ligne backup en premier (qui avait toujours la valeur par défaut) et a échoué ![]()
La correction consiste simplement à ajouter table_schema = 'public' à la requête afin qu’elle ne vérifie que le schéma sur lequel les migrations opèrent réellement.
Merci pour la correction ! Tout fonctionne parfaitement pour moi maintenant ![]()
Je suis vraiment désolé, j’ai rencontré un problème avant d’entrer dans la base de données et n’ai pas pu fournir les résultats de la requête. Heureusement, Don a déjà fait un retour.
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>'
/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'
bin/rails: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$
Mais comment résoudre ce problème d’accès à la base de données ? ![]()
J’ai vérifié les points suivants selon la procédure ci-dessous :
# 1. Vérifier l'emplacement de debug dans Gemfile
grep -n debug /var/www/discourse/Gemfile
# 2. Vérifier si application.rb requiert directement
grep -n debug /var/www/discourse/config/application.rb
# 3. Vérifier si c'est introduit par un plugin
find /var/www/discourse/plugins -name '*.rb' -exec grep -l debug {} \;
Les résultats sont les suivants :
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
J’ai installé discourse via docker (sans installer de plugins), puis j’ai installé mysql dans le conteneur, importé la base de données xenForo, puis utilisé le script de migration pour migrer xenForo vers discourse. J’ai dû modifier la configuration de Gemfile dans le conteneur pendant ce processus. Après une migration réussie, j’ai effectué plusieurs rebuilds pour les mises à jour.
Ma question est : pourquoi ai-je toujours des problèmes lors de l’exécution de bin/rails db même après avoir effectué plusieurs rebuilds et mises à jour de discourse ?
Merci
Dernier retour : réinstallation du système d’exploitation, redéploiement de Discourse, importation de la sauvegarde. Cette erreur apparaît toujours.