yml rails proyecto postgres new myapp digitalocean datos crear conectar con ruby-on-rails ruby ruby-on-rails-3 postgresql

ruby-on-rails - proyecto - rails new myapp postgresql



El rol no existe y no puede crear una base de datos cuando se usa PostgreSQL (3)

Estoy usando Heroku para mi aplicación y requiere PostgreSQL, pero aún puede usar SQLite3 para el desarrollo. Como Heroku desaconsejaba fuertemente tener 2 bases de datos diferentes, decidí cambiar a PostgreSQL para el desarrollo. Instalé la gem pg la gem pg y también fui al sitio oficial de PostgreSQL para obtener el instalador de Windows y también cambié mi database.yml . Durante la instalación, requiere una contraseña para PostgreSQL, así que hice una. Tuve que cambiar el archivo pg_hba.conf de usar md5 para trust en fin de pasar: fe_sendauth: no password supplied al intentar crear la base de datos.

# TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host all all 127.0.0.1/32 trust # was md5 # IPv6 local connections: host all all ::1/128 trust # was md5 # Allow replication connections from localhost, by a user with the # replication privilege. #host replication postgres 127.0.0.1/32 trust #host replication postgres ::1/128 trust

Sin embargo, después de deshacerme de eso, ahora entiendo esto:

$ rake db:create (in C:/app) FATAL: role "User" does not exist Couldn''t create database for {"adapter"=>"postgresql", "encoding"=>"utf8", "database"=>"app_test", "pool"=>5, "username"=>nil, "password"=>nil}

Todavía tengo mi development.sqlite3 y text.sqlite3 presente, ¿podría ser ese el problema? ¿Qué se debe hacer?

Aquí está mi esencia: https://gist.github.com/1522188


Agregue un nombre de usuario a su database.yml , también podría usar el nombre de su aplicación (o alguna variante del nombre) como nombre de usuario, app_name como marcador de posición:

development: adapter: postgresql encoding: utf8 database: app_development pool: 5 username: app_name password:

Luego crea el usuario (AKA "role") dentro de PostgreSQL usando psql.exe :

$ psql -d postgres postgres=# create role app_name login createdb; postgres=# /q

La primera línea está en su terminal, las siguientes dos están dentro de psql . Luego haz tu rake db:create .

El User usuario posiblemente sea un user predeterminado, pero el user ya lo tomó para otros fines en PostgreSQL, por lo que tendría que citarlo para preservar el caso si desea utilizar el User como nombre de usuario:

postgres=# create role "User" login createdb;

Es mejor crear un usuario por aplicación de todos modos.

También querrás hacer cosas similares para tu entrada de test en database.yml .


PostgreSQL intentará crear la base de datos con su nombre de cuenta (inicio de sesión) si no se especifica un username en su config/database.yml . En OS X y Linux puedes ver quién es con whoami . Parece que estás usando Windows.

Solución A: crea un usuario de PostgreSQL que coincida con el que está buscando. Por ejemplo

createuser --superuser some_user

Solución B: Cambie el usuario de DB al establecer explícitamente un nombre de usuario como se muestra en la respuesta de mu .


Si tiene una cuenta / usuario específico en su máquina para postgres llamado postgres, por ejemplo.

Luego, al ejecutar este comando aparecerá un mensaje para que ingrese un nombre de rol.

sudo -u postgres createuser --interactive

Luego haciendo

rake db:create

¡Deberia trabajar!