Probleme beim Ausführen von Import-/Migrationsskripten

Ich habe zuvor erfolgreich ein Forum mit einem benutzerdefinierten Skript nach Discorse migriert, aber jetzt, wenn ich es erneut ausführe, erhalte ich den folgenden Importfehler:

/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)

To resolve this issue:

- Did you create the database for this app, or delete it? You may need to create your database.
- Has the database name changed? Check your database.yml config has the correct database name.

To create your database, run:

        bin/rails db:create

Der folgende Import in meinem Skript schlägt fehl:

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

Ich führe das Skript mit aus:

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

Ich verstehe den Fehler jedoch nicht wirklich: Ich kann über sudo -u postgres psql discourse auf die Datenbank zugreifen und bestätigen, dass die Datenbank „discourse“ existiert. Auch die Website läuft einwandfrei. Wenn ich rails c öffne, kann ich auch auf die Daten zugreifen.

Können Sie mir einige Hinweise geben, was hier schiefgelaufen ist?

Discourse kann seine Datenbank nicht finden. Sie müssen das also beheben. War dies eine Standardinstallation oder eine Entwicklungsinstallation? Schauen Sie sich den entsprechenden Leitfaden an und machen Sie Discourse als ersten Schritt funktionsfähig.

Standardinstallation, gemäß https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md

Das Einzige, was ich getan habe (woran ich mich jetzt erinnern kann), seit es letztes Mal funktionierte, war das Zurückspielen von Backups.

Was mich an dem Fehler verwirrt, ist, dass alles andere funktioniert. Die Website funktioniert einwandfrei. Nur das Importskript schlägt fehl.

Und führst du das Skript innerhalb des Containers aus?

Ja, ich benutze ./launcher enter app und habe nur eine Konfiguration (app).

Oh. Entschuldigung. Sie haben das alles in der OP gesagt; ich habe nicht gut gelesen!

Mir fällt keine Erklärung ein. Neustart vielleicht?

Ich habe einen Neustart durchgeführt und das Problem dadurch nicht behoben. Ich trete nun auch auf meinem lokalen Rechner (lokales Docker) auf dasselbe Problem … was mich vermuten lässt, dass ich den Befehl irgendwie falsch ausführe …

Und vielen Dank – ich schätze die Schnelligkeit Ihrer Antworten und die Unterstützung!

Ja, jetzt habe ich es verstanden. Ich habe das Skript als root ausgeführt, aber nicht als Benutzer discourse:

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

Danke für die Unterstützung @pfaffman <3

3 „Gefällt mir“

Hmm. Vielleicht hat sich etwas geändert, da ich mir sicher bin, dass ich keine Importskripte ausgeführt habe, wie ich es bei Discourse tue. Gute Arbeit!

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