Problèmes d'exécution des scripts d'importation/migration

J’ai déjà migré avec succès un forum vers Disourcse à l’aide d’un script personnalisé, mais maintenant, lorsque je l’exécute à nouveau, j’obtiens l’erreur d’importation suivante :

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/connection_adapters/postgresql_adapter.rb:81:in `rescue in new_client': We could not find your database: discourse. Which can be found in the database configuration file located at config/database.yml. (ActiveRecord::NoDatabaseError)

Pour résoudre ce problème :

- Avez-vous créé la base de données pour cette application, ou l'avez-vous supprimée ? Vous devrez peut-être créer votre base de données.
- Le nom de la base de données a-t-il changé ? Vérifiez que votre fichier config/database.yml contient le bon nom de base de données.

Pour créer votre base de données, exécutez :

        bin/rails db:create

L’importation suivante dans mon script échoue :

require File.expand_path(File.dirname(__FILE__) + \"/base.rb\")

J’exécute le script avec :

./launcher enter app
cd /var/www/discourse
bundle exec ruby script/import_scripts/avatar.rb

Je ne comprends pas vraiment l’erreur : je peux accéder à la base de données via sudo -u postgres psql discourse, ce qui valide que la base de données “discourse” existe. De plus, le site web fonctionne correctement. Lorsque j’ouvre rails c, je peux également accéder aux données.

Pouvez-vous me donner quelques pistes sur ce qui ne va pas ?

Discourse ne trouve pas sa base de données. Vous devez donc résoudre ce problème. S’agissait-il d’une installation standard ou d’une installation de développement ? Consultez le guide approprié et faites fonctionner Discourse comme première étape.

Installation standard, en suivant discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

La seule chose que j’ai faite (à ma connaissance) depuis la dernière fois que cela fonctionnait était de revenir aux sauvegardes.

Ce qui me trouble dans l’erreur, c’est que tout le reste fonctionne. Le site fonctionne parfaitement. Seul le script d’importation échoue.

Et vous exécutez le script à l’intérieur du conteneur ?

Oui, j’utilise ./launcher enter app et je n’ai qu’une seule configuration (app).

Oh. Désolé. Vous avez dit tout cela dans le message initial ; je n’ai pas bien lu !

Je ne peux pas trouver d’explication. Redémarrer peut-être ?

J’ai redémarré et cela n’a pas résolu le problème. Je rencontre maintenant le même problème sur ma machine locale (docker local)… ce qui me fait penser que j’exécute la commande d’une manière ou d’une autre incorrectement…

Et merci – je salue la rapidité de vos réponses et le soutien !

Oui, j’ai compris maintenant. J’ai exécuté le script en tant que root, mais pas en tant qu’utilisateur discourse :

./launcher enter app
cd /var/www/discourse
su discourse
bundle exec ruby script/import_scripts/import.rb

Merci pour votre aide @pfaffman <3

3 « J'aime »

Hmm. Peut-être que quelque chose a changé, car je suis sûr de ne pas avoir exécuté de scripts d’importation en tant qu’utilisateur de Discourse. Bon travail !

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.