Tengo una aplicación de rieles cuyas bases de datos están en SQLite (El desarrollador y la producción). Como me estoy mudando a heroku, quiero convertir mi base de datos a PostgreSQL.
De todos modos, escuché que no es necesario cambiar la base de datos local de desarrollo de SQLite, así que no necesito cambiar eso, sin embargo, ¿cómo hago para cambiar el entorno de producción de SQLite a PostgreSQL?
¿Alguien ha hecho esto antes y puede ayudar?
PD No estoy seguro de cómo se llama exactamente este proceso, pero escuché sobre la migración de la base de datos de SQLite a PostgreSQL, ¿es eso lo que hay que hacer?
ruby-on-rails
database
sqlite
postgresql
heroku
Vasseurth
fuente
fuente
Respuestas:
Puede cambiar su database.yml a esto en lugar de usar el sqlite de fábrica:
fuente
Los siguientes pasos funcionaron para mí. Utiliza la gema de grifos , creada por Heroku y mencionada en Railscast # 342 de Ryan Bates. Hay algunos pasos, pero funcionó perfectamente (incluso las fechas se migraron correctamente), y fue mucho más fácil que las migraciones de Oracle -> DB2 o SQL Server -> Oracle que he hecho en el pasado.
Tenga en cuenta que SQLite no tiene una identificación de usuario o contraseña, pero la gema de grifos requiere algo. Acabo de usar los literales "usuario" y "contraseña".
Cree el usuario de la base de datos Postgres para las nuevas bases de datos.
EDITAR - Comando actualizado a continuación - use esto en su lugar
Crea las bases de datos requeridas
Actualiza el Gemfile
Actualizar database.yml
Inicie el servidor de grifos en la base de datos sqlite
Migrar los datos.
Reinicie el servidor web Rails
Limpiar el Gemfile
fuente
Como te estás mudando a heroku, puedes usar toques para hacer esto:
Esto empujará sus datos de sqlite de desarrollo local a producción, y heroku se convertirá automáticamente en postgres para usted.
Esto también debería funcionar para impulsar una producción sqlite db a heroku, pero no se ha probado.
fuente
también necesitará agregar la línea " gema 'pg' " a su archivo de gemas, siendo 'pg' la gema actual de postgres para Rails.
fuente
Simplemente actualice el archivo config / database.yml:
Lo anterior es lo que se genera cuando ejecuta:
También agregue esto a su Gemfile:
fuente
Ahora se vuelve fácil con el comando único
fuente
Después de reemplazar gema
'sqlite3
con gemapg
en el archivo de gemas, seguí obteniendo elsqlite3 error
empuje al maestro Heroku porque olvidé comprometer el archivo de gemas actualizado. Simplemente haciendo lo siguiente resolvió esto:fuente
Simplemente actualice su datatbase.yml
Estamos utilizando rieles y los estándares básicos deben seguirse como DRY, Convención sobre configuración, etc., por lo que en el código anterior no repetimos el mismo código una y otra vez.
fuente
Se ha mencionado anteriormente, pero no tengo suficiente reputación como merodeador para poder votarlo. Con la esperanza de llamar un poco más la atención de los novatos de Rails que leen esta respuesta:
^^^ Esta es una pieza clave además del archivo database.yml descrito en la respuesta seleccionada para migrar su aplicación Rails a Postgres.
fuente
Así es como tengo la configuración mía. Si solo usa MRI y no Jruby, puede omitir la lógica en la configuración del adaptador.
fuente
Puedes intentar lo siguiente:
sqlite3 development.db .dump | psql dbname username
o intente con sqlitetopgscript: http://trac-hacks.org/browser/sqlitetopgscript/0.10/sqlite2pg
fuente
Una posible solución (no para heroku) es usar yaml.db de:
http://www.railslodge.com/plugins/830-yaml-db
fuente
Hoy tuve el mismo problema. Estoy trabajando en Rails 4.2.8. La solución fue especificar la versión de gema pg, en mi caso
0.18.4
,.fuente