He instalado PostgreSQL en mi Mac OS Lion y estoy trabajando en una aplicación de rieles. Utilizo RVM para mantener todo separado de mis otras aplicaciones de Rails.
Por alguna razón, cuando trato de migrar la base de datos por primera vez, rake no puede encontrar el usuario de postgres. Me sale el error
FATAL: role "postgres" does not exist
Tengo pgAdmin, por lo que puedo ver claramente que hay un usuario de postgres en la base de datos, la cuenta de administrador de hecho, así que no estoy seguro de qué más hacer.
Leí en algún lugar sobre personas que tienen problemas con PostgreSQL debido a la ruta en la que se instaló, pero luego no creo que hubiera llegado tan lejos si no hubiera podido encontrar el archivo db.
postgres
no se ha creado el usuario de base de datos (= rol) , que puede llevar al mismo mensaje de error, consulte esta pregunta relacionada: stackoverflow.com/questions/11919391/…Respuestas:
Este mensaje aparece cuando el usuario de la base de datos no existe. Compare el manual aquí .
Varias bases de datos locales no pueden ser la explicación. Los roles son válidos para todo el clúster. El manual de nuevo :
Debe terminar en otro clúster de base de datos . Ese sería otro servidor ejecutándose en la misma máquina, escuchando un puerto diferente. O, más probablemente, en una máquina diferente.
¿Podría ser que el mensaje provenga, de hecho, del servidor remoto?
fuente
docker rmi $(docker images -q) --force
. pero en cuestión eravolumes
supongoEn realidad, por alguna razón desconocida, descubrí que el problema se debía a que no se había creado la función postgresql.
Intenta ejecutar:
Tenga en cuenta que los roles son la forma en que PostgreSQL mantiene los permisos de la base de datos . Si no hay un rol para el usuario de postgres, entonces no puede acceder a nada. El comando createuser es un envoltorio delgado alrededor de los comandos CREATE USER, CREATE ROLE, etc.
fuente
sudo su - postgres
antes de que este comando funcionara para mí. ¡Gracias!-r
opción no es necesaria con la-s
opción. El superusuario incluye el atributo "Crear rol".Recientemente tuve este problema inmediatamente después de instalar postgres. Si viene inmediatamente después de la instalación, es posible que no tenga el usuario predeterminado, postgres. En ese caso, puede crear postgres de usuario predeterminado usando el siguiente comando.
createuser -s -U $ USER
Se le pedirá que ingrese el nombre y la contraseña de la función de base de datos requerida.
Ej: psql -U postgres
Aquí, debe ingresar la contraseña si ha dado alguna, mientras crea el usuario.
Espero eso ayude :)
fuente
Estaba en OSX 10.8, y todo lo que probé me dio el
FATAL: role "USER" does not exist
. Como dijo mucha gente aquí, correcreateuser -s USER
, pero eso me dio el mismo error. Esto finalmente funcionó para mí:El
createuser -s --username=postgres
crea un superusuario (bandera -s) conectándose como postgres (--username = bandera de postgres).Veo que su pregunta ha sido respondida, pero quiero agregar esta respuesta para las personas que usan OSX que intentan instalar PostgreSQL 9.2.4.
fuente
sudo su postgres
.Encontré este problema justo cuando instalé por primera vez la aplicación POSTGRES.app de Heroku. Después de una mañana de prueba y error, creo que esta línea de código resolvió el problema. Como se describió anteriormente, esto se debe a que postgresql no tiene un rol predeterminado la primera vez que se configura. Y tenemos que configurar eso.
Debe iniciar sesión en su consola psql respectiva para usar este comando psql.
También señaló que, si ya creó el rol 'postgre' pero aún obtiene errores de permiso, debe modificarlo con el comando:
¡Espero eso ayude!
fuente
En la documentación de Heroku; Comenzando con los rieles 4, dicen:
Luego, simplemente elimine esa línea en "desarrollo:", si no lo hace, le dice a la base de datos que funciona bajo el rol "myapp"
También recuerde crear la base de datos para el desarrollo:
Reemplaza "myapp" por el nombre de tu aplicación
fuente
¿Podría tener varias bases de datos locales? Verifique su
database.yml
y asegúrese de que está presionando el pg db que desea. Userails console
para confirmar.fuente
El procedimiento de instalación crea una cuenta de usuario llamada
postgres
que está asociada con el rol predeterminado de Postgres. Para utilizar Postgres, puede iniciar sesión en esa cuenta. Pero si no se especifica explícitamente, la aplicación rails busca un rol diferente, más particularmente el rol que tiene su nombre de usuario de Unix que podría no ser creado en los roles de postgres.Para superar eso, puede crear un nuevo rol, primero cambiando al rol predeterminado postgres que se creó durante la instalación
sudo -i -u postgres
Después de iniciar sesión en la cuenta de postgres, puede crear un nuevo usuario con el comando:
createuser --interactive
Esto le indicará algunas opciones y, según sus respuestas, ejecutará los comandos de Postgres correctos para crear un usuario.
Pase un nombre de función y algunos permisos y se crea la función, luego puede migrar su base de datos
fuente
Mi respuesta fue mucho más simple. Simplemente fui a la carpeta db y eliminé la columna de identificación, que había intentado crear a la fuerza, pero que en realidad se crea automáticamente. También eliminé el NOMBRE DE USUARIO en el archivo database.yml (en la carpeta de configuración).
fuente
En el símbolo del sistema del usuario local de Ubuntu, pero no el usuario root, escriba
sudo -u postgres createuser nombre de usuario
El nombre de usuario anterior debe coincidir con el nombre indicado en el mensaje "FATAL: el rol 'nombre de usuario' no existe".
Ingrese la contraseña para el nombre de usuario.
Luego, vuelva a ingresar el comando que generó el mensaje de rol no existe.
fuente
Terminé aquí después de intentar seguir el tutorial de Ryan Bate sobre la implementación en AWS EC2 con caucho. Esto es lo que me sucedió: Creamos una nueva aplicación usando "
rails new blog -d postgresql
Obviamente, esto crea una nueva aplicación con pg como base de datos, pero la base de datos aún no se ha creado. Con sqlite, simplemente ejecute rake db: migrate, sin embargo, con pg primero debe crear la base de datos pg. Ryan no dio este paso. El comando es
rake db:create:all
, entonces podemos ejecutarrake db:migrate
La segunda parte es cambiar el archivo database.yml. El nombre de usuario predeterminado cuando se genera el archivo es 'appname'. Sin embargo, es probable que su rol para el administrador de postgresql sea algo diferente (al menos lo fue para mí). Lo cambié a mi nombre (vea los consejos anteriores sobre cómo crear un nombre de rol) y estaba listo para comenzar.
Espero que esto ayude.
fuente
Después de un montón de instalación y desinstalación de Postgres, esto es lo que ahora parece funcionar de manera consistente para mí con Os X Mavericks, Rails 4 y Ruby 2.
En el archivo database.yml, cambio los nombres de usuario predeterminados al nombre de usuario de mi computadora, que para mí es simplemente "admin".
En la línea de comando ejecuto rake db: create: all
Luego ejecuto rake db: migrate
Cuando ejecuto el servidor de rails y verifico el host local, dice "Bienvenido a bordo".
fuente
Es posible que pueda solucionar esto ejecutándolo
initdb -U postgres -D /path/to/data
o ejecutándolo como postgres de usuario, ya que está predeterminado para el usuario actual. GL!fuente