Problemas al ejecutar scripts de importación/migración

He migrado con éxito un foro a Disourcse con un script personalizado anteriormente, pero ahora, cuando lo ejecuto de nuevo, obtengo el siguiente error de importación:

/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': No pudimos encontrar tu base de datos: discourse. La cual se puede encontrar en el archivo de configuración de la base de datos ubicado en config/database.yml. (ActiveRecord::NoDatabaseError)

Para resolver este problema:

- ¿Creaste la base de datos para esta aplicación o la eliminaste? Es posible que necesites crear tu base de datos.
- ¿Ha cambiado el nombre de la base de datos? Comprueba que tu configuración de database.yml tenga el nombre de base de datos correcto.

Para crear tu base de datos, ejecuta:

        bin/rails db:create

La siguiente importación en mi script falla:

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

Ejecuto el script con:

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

Realmente no entiendo el error: puedo acceder a la base de datos a través de sudo -u postgres psql discourse, validando que la base de datos “discourse” sí existe. Además, el sitio web está funcionando correctamente. Cuando abro rails c también puedo acceder a los datos.

¿Puedes darme algunas pistas sobre qué está mal?

Discourse no puede encontrar su base de datos. Así que necesitas arreglar eso. ¿Fue una instalación estándar o una instalación de desarrollo? Echa un vistazo a la guía apropiada y haz que Discourse funcione como primer paso.

Instalación estándar, siguiendo discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

Lo único que hice (que se me ocurre ahora) desde que funcionó la última vez fue revertir a copias de seguridad.

Lo que me confunde del error es que todo lo demás funciona. El sitio funciona perfectamente. Solo el script de importación falla.

¿Y estás ejecutando el script dentro del contenedor?

Sí, uso ./launcher enter app y solo tengo una configuración (app).

Oh. Lo siento. Dijiste todo eso en el OP; ¡no leí muy bien!

No se me ocurre ninguna explicación. ¿Reiniciar?

Reinicié y eso no solucionó el problema. Ahora también encuentro el mismo problema en mi máquina local (docker local)… lo que me hace pensar que de alguna manera ejecuto el comando incorrectamente…

Y gracias, ¡celebro la rapidez de sus respuestas y el soporte!

Sí, ahora lo entiendo. Ejecuté el script como root, pero no como el usuario discourse:

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

Gracias por el soporte @pfaffman <3

3 Me gusta

Hmm. Quizás algo haya cambiado, ya que estoy seguro de que no he estado ejecutando scripts de importación como los que usa Discourse. ¡Buen trabajo!

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