2011-08-07 12 views
5

Tengo una aplicación web que usa SQLite. Lo despliego en heroku que usa PostgreSLQ. Esto causa problemas a veces y me recomendaron desarrollar mi aplicación usando PostgreSQL en lugar de SQLite.ROR cambia la base de datos de la aplicación de SQLite a PostgreSQL

descubrí que yo debería modificar database.yml así (mismo para pruebas y producción):

development: 
    adapter: postgresql 
    database: my_database 
    username: my_username 
    password: my_passwod 
    host: /var/run/postgresql or localhost 

Bueno, la única base de datos que he usado es SQLite, por lo que sólo trató de correr el riesgo, pero falló. Llené este archivo con algunos datos aleatorios.

rake db:migrate como resultado:

cuando solía host: localhost

> could not connect to server: Connection refused Is the server running 
> on host "localhost" and accepting TCP/IP connections on port 5432? 

Cuando host: /var/run/postgresql

> could not connect to server: No such file or directory 
> Is the server running locally and accepting connections on Unix domain socket 
> "/var/run/postgresql/.s.PGSQL.5432"? 

supongo que debería empezar servidor PostgreSQL en primer lugar, pero no tienen idea de cómo hacer esto. Por favor, dame una respuesta paso a paso sobre cómo pasar de una aplicación SQLite a una aplicación PostgreSQL en funcionamiento.

+0

Aquí hay un tutorial para comenzar con Ruby on Rails y Postgres: http://vandenabeele.com/Rails-on-Ubuntu-Jaunty. Y aquí hay un paso más a paso solo para Postgres: http://www.yolinux.com/TUTORIALS/LinuxTutorialPostgreSQL.html. – atrain

+0

posible duplicado de http://stackoverflow.com/questions/6710654/how-do-you-easily-change-from-sqlite-to-postgresql-in-rails –

Respuesta

2

Me gustaría aconsejarle que descargue Postgresql, incluido el propio PGADMIN, que es más fácil de usar que el terminal psql.

Y creo que al descargar/instalar Postgresql desde su sitio web oficial ... el paquete ya estaba completo.

Al momento de la instalación, el postgresql le pedirá una cierta contraseña que utilizará para acceder a su servidor postgresql.

Después de la instalación, abra el PGADMIN y conéctese al servidor. Ingrese su contraseña (que había declarado durante la instalación).

Si no puede conectarse al servidor, edite el puerto. Para hacer esto, haga clic derecho en el servidor y luego vaya a propiedades ... edite el puerto en algo que es gratis. Ejemplo: 5433 y así sucesivamente. Tu decides.

Si todo está trabajando ... finalmente configurar la configuración correcta para su database.yml

Esto es importante:

development: 
    adapter: postgresql 
    database: name_of_database_here 
    host: localhost 
    username: postgres 
    password: your_db_server_password_here 
    pool: 5 
    timeout: 5000 
    port: 5433 

bien de esa información de configuración anterior, especifique las piezas importantes. De forma predeterminada, su nombre de usuario de servidor de db es postgres y, obviamente, su host es localhost porque está configurando en el desarrollo.

Si su puerto es 5432 de forma predeterminada, simplemente elimine la parte del puerto.

Vamos a su gemfile.

Para poder implementar su aplicación en heroku. Usa gem 'pg' en lugar de sqlite3.

Si tiene una base de datos sqlite3 existente, coloque la gema dentro del grupo de desarrollo. En ese caso, Heroku se unirá con éxito durante el proceso maestro de git push heroku.

group :development do 
     gem 'sqlite3' 
end 

Su gem 'pg' puede ir fuera de los grupos o ponerlo en su grupo de producción.

Importante:

Antes de cualquier procedimiento de despliegue, asegúrese de que puede ejecutar la aplicación a nivel local (localhost). Entonces, si todo está funcionando ... ese es el momento en que debe organizar las cosas necesarias de manera adecuada.

Si desea cambiar a Postgresql en lugar de sqlite3 después de empujar la aplicación a Heroku ... puede hacerlo mediante el complemento pgbackups y pg_restore el archivo de volcado en su servidor db postgresql local.

Eso es todo. Espero eso ayude.

Cuestiones relacionadas