Estoy usando PostgreSql aplicación para mac (http://postgresapp.com/). Lo he utilizado en el pasado en otros equipos, pero me da algunos problemas al instalar en mi macbook. He instalado la aplicación y me encontré:

psql -h localhost

Devuelve:

psql: FATAL:  database "<user>" does not exist

Parece que aún no se puede ejecutar la consola para crear la base de datos que está tratando de encontrar. Lo mismo sucede cuando acabo de correr:

psql 

o si me lanzamiento de postgresql desde la aplicación del menú desplegable:

Máquina estadísticas:

  • OSX 10.8.4

  • psql (PostgreSQL) 9.2.4

Cualquier ayuda es muy apreciada.

También he intentado instalar PostgreSql a través de homebrew y me da el mismo problema. También he leído las aplicaciones de la página de la documentación que se indica:

Cuando Postgres.la aplicación se ejecuta por primera vez, se crea la $USUARIO de la base de datos,
que es el valor predeterminado de la base de datos para postgresql cuando no se especifica ninguno. El
de usuario predeterminado es de $USUARIO, sin contraseña.

Así que parece que la aplicación no es la creación de $USUARIO, sin embargo, me he instalado->desinstalado-reinstalado varias veces, así que debe ser algo con mi máquina.

He encontrado la respuesta, pero no estoy seguro de cómo funciona exactamente como el usuario que ha respondido en este hilo -> Obtención de Postgresql que se Ejecuta En Mac: Base de datos «postgres» no existe no de seguimiento. He utilizado el siguiente comando para obtener psql para abrir:

psql -d template1

Voy a dejar este sin respuesta hasta que alguien puede dar una explicación de por qué esto funciona.

  • ¿Qué psql -d postgres -U postgres -h localhost espectáculo? Sin banderas el valor predeterminado es el CLI de usuario, y me han dicho que por defecto es el «postgres» de administración de base de datos pero no tengo un mac para probarlo.
  • Que me da psql: FATAL: la función «postgres» no existe, que originalmente me trajo aquí -> stackoverflow.com/questions/15301826/…. He intentado usar esa respuesta, pero estoy consiguiendo el mismo resultado -> psql: FATAL: base de datos de «usuario» no existe
  • Has mirado en la base de datos de registro? Me pregunto si más detalle sería emitida allí.
  • Yo tenía el mismo problema. Sólo haciendo createdb <user> trabajó para mí.
InformationsquelleAutor Ryan Rich | 2013-07-13

17 Comentarios

  1. 1049

    Parece que el gestor de paquetes no se pudo crear la base de datos denominada $usuario para usted. La razón por la que

    psql -d template1

    trabaja para usted es que plantilla1 es una base de datos creada por postgres sí mismo, y está presente en todas las instalaciones.
    Que al parecer son capaces de iniciar sesión en template1, así que usted debe tener algunos derechos asignado por la base de datos. Intente esto en un indicador de comandos de shell:

    createdb

    y, a continuación, ver si usted puede iniciar la sesión de nuevo con

    psql -h localhost

    Esto simplemente crear una base de datos para su inicio de sesión de usuario, que creo que es lo que usted está buscando. Si createdb falla, entonces usted no tiene suficientes derechos para hacer su propia base de datos, y usted tendrá que averiguar cómo arreglar el homebrew paquete.

    • En mi caso me escribió $ createdb -h localhost para solucionar el error could not connect to database postgres: could not connect to server. Después de que me puede conectarse a postgresql de la consola a través de psql -h localhost.
    • Todavía se me pone un mensaje de contraseña d y no tienen idea de lo que es, que es el valor predeterminado de postgres contraseña de la aplicación?
    • Gracias @Kirk. ¿Realmente necesitamos -d template1 en su primer mandato? He visto «template1» en los tutoriales de todos a través de Internet, pero que sólo sirve para confundir a mí. Más lógico sería, en mi opinión 1) Crear el usuario PostgreSQL por ejemplo, «usuario» 2) Crear una base de datos con el mismo nombre que el usuario «usuario» (creo que esto es una locura, pero parece PostgreSQL requiere) 3) iniciar Sesión en PostgreSQL como el super usuario «postgres» y asignar los privilegios de base de datos de «usuario a» el usuario «usuario» (oh, dios mío, de verdad es esto la vida real?)
    • La -d plantilla1 está allí sólo para comprobar que el OP pude entrar en todo. Ya que es creado en el initdb tiempo, siempre existe, y era fácil de comprobar. Desde ese punto en adelante, el procedimiento es, en general, «la vida real».
    • Usted acaba de curar un dolor de cabeza masivo que tuve con un simple comando. Gracias!
    • Para ser un poco más explícito puede ejecutar el comando: createdb `whoami` que va a crear una base de datos basada en el nombre de usuario actual
    • útil para saber createdb funciona por sí sola!! gracias por compartir!!
    • No parece una buena idea para crear una nueva base de datos para que el usuario pueda obtener en. psql -d postgres como por algunas de las otras respuestas parecen mucho más merecedores de algunos upvotes.

  2. 138

    De la terminal, basta con Ejecutar el comando en el símbolo del sistema de la ventana. (No dentro de psql).

    createdb <user>

    Y, a continuación, intente ejecutar postgres de nuevo.

    • Hermoso! Esto lo hizo! Después de la ejecución de este, todos los comandos psql trabajo como encanto! un millón de gracias!
    • No tenía idea de que createdb fue también una herramienta de línea de comandos
    • Y yo estaba tratando en psql plantilla. maldito
    • también puede ejecutar createdb
  3. 129

    Por defecto, postgres intenta conectarse a una base de datos con el mismo nombre que el usuario. Para evitar este comportamiento por defecto, sólo tiene que especificar el usuario y la base de datos:

    psql -U Username DatabaseName 
    • Gracias, ¿sabes la razón por la que el diseño – por qué en el mundo que me quiero ir de mi-nombre de la base de datos por defecto?
    • Las bases de datos son a menudo utilizados por los servicios que se ejecuta como un usuario dedicado. Así que supongo que la estrategia de utilizar el nombre de usuario de la base de datos predeterminada nombre es probablemente más útil que el uso de algunos fija predeterminada nombre de base de datos (por ejemplo, «postgres»).
    • ¿cómo se puede ejecutar la secuencia de comandos SQL que crea la base de datos? en mi caso siempre intenta conectarse a la base de datos <usuario> cuando mi objetivo es crear otra DB: psql -U Username -f create_db.sql este devolverá el error: database Username doesn't exists
    • LA RESPUESTA!!!!!!!!!!!!!!
    • Fantástica respuesta gracias, pero plantea la pregunta ¿por qué no es en la ayuda en línea de comando? psql –help
  4. 51
    1. De inicio de sesión como usuario predeterminado: sudo -i -u postgres
    2. Crear nuevo Usuario: createuser --interactive
    3. Cuando se le pida el nombre de la función, introduzca nombre de usuario de linux, y seleccione Sí para superusuario pregunta.
    4. Todavía se registra como usuario postgres, crear una base de datos: createdb <username_from_step_3>
    5. Confirmar el error(s) se han ido introduciendo: psql en el símbolo del sistema.
    6. De salida debe mostrar psql (x.x.x) Type "help" for help.
    • Hombre, usted me salvó un montón de tiempo.
    • Necesitaba hacer esto en Windows. Establecer el nuevo pg nombre de usuario para Linux de la onu. Fijo.
  5. 39

    De inicio de sesión predeterminada de la base de datos template1:

    #psql -d template1
    #template1=# \l
    
      List of databases
       Name    |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges  
    -----------+---------+----------+-------------+-------------+---------------------
     postgres  | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
     template0 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
               |         |          |             |             | gogasca=CTc/gogasca
     template1 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
               |         |          |             |             | gogasca=CTc/gogasca
    (3 rows)

    Crear una base de datos con su nombre de usuario:

    template1=# CREATE DATABASE gogasca WITH OWNER gogasca ENCODING 'UTF8';
    CREATE DATABASE

    Dejar de fumar y, a continuación, inicie sesión de nuevo

    template1=# \q
    gonzo:~ gogasca$ psql -h localhost
    psql (9.4.0)
    Type "help" for help.
    
    gogasca=# \l
                                    List of databases
       Name    |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges  
    -----------+---------+----------+-------------+-------------+---------------------
     gogasca   | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
     postgres  | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
     template0 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
               |         |          |             |             | gogasca=CTc/gogasca
     template1 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
               |         |          |             |             | gogasca=CTc/gogasca
    (4 rows)
  6. 17

    A los que me enfrentaba el mismo error al intentar abrir postgresql en mac

    psql: FATAL:  database "user" does not exist

    Me encontré con este simple comando para resolverlo:

    method1

    $ createdb --owner=postgres --encoding=utf8 user

    y tipo de

     psql

    Método 2:

    psql -d postgres
    • Método 2 salvó la vida
  7. 7

    Tenido el mismo problema, un simple psql -d postgres hice (Escriba el comando en el terminal)

  8. 5

    Este error también puede producirse si la variable de entorno PGDATABASE se establece en el nombre de una base de datos que no existe.

    En OSX, vi el siguiente error al tratar de iniciar psql de la Postgress.el menú de la aplicación:

    psql: FATAL: database "otherdb" does not exist

    La solución para el error fue quitar export PGDATABASE=otherdb de ~/.bash_profile:

    Además, si PGUSER está ajustado a algo distinto de su nombre de usuario, se producirá el siguiente error:

    psql: FATAL: role "note" does not exist

    La solución es eliminar export PGUSER=notme de ~/.bash_profile.

  9. 4

    Ya que esta pregunta es la primera en los resultados de búsqueda, voy a poner una solución diferente para un problema diferente aquí de todos modos, para no tener un duplicado de título.

    El mismo mensaje de error puede aparecer cuando se ejecuta un archivo de consulta en psql sin especificar una base de datos. Ya que no hay use declaración en postgresql, tenemos que especificar la base de datos en la línea de comandos, por ejemplo:

    psql -d db_name -f query_file.sql
    • y base de datos template1 siempre existe
  10. 4

    Como el createdb documentación estados:

    La primera base de datos es creada por el initdb comando cuando el área de almacenamiento de datos se inicializa… Esta base de datos es llamado postgres.

    Así que si algunas OS/postgresql distribuciones de otra manera, ciertamente no es la predeterminada/estándar (sólo verificado que initdb en openSUSE 13.1 crea la base de datos «postgres», pero no «<usuario>»). Larga historia corta, psql -d postgres se espera que al utilizar un usuario distinto «postgres».

    Obviamente, la aceptación de la respuesta, la ejecución de createdb para crear una base de datos nombrada como el usuario, funciona igual de bien, pero crea un superfluo DB.

  11. 1

    tenido el problema con el controlador JDBC, así que uno sólo tiene que añadir a la base de datos (tal vez de forma redundante dependiendo de la herramienta que usted puede usar) después del nombre de host de la URL, por ejemplo,
    jdbc:postgres://<host(:port)>/<db-name>

    más detalles se documentan aquí: http://www.postgresql.org/docs/7.4/static/jdbc-use.html#JDBC-CONNECT

    • Sé que es un poco fuera de tema, teniendo en cuenta que era sólo pidió psql, pero Google me trajo aquí con mi problema por lo que creo que vale la pena mencionar aquí
  12. 0

    En primer lugar, es útil para crear una base de datos con el mismo nombre como su uso actual, para evitar el error cuando se quiera usar el valor predeterminado de la base de datos y crear tablas nuevas sin declarar el nombre de una base de datos explícitamente.

    Reemplazar «skynotify» con su nombre de usuario:

    psql -d postgres -c "CREATE DATABASE skynotify ENCODING 'UTF-8';"

    -d declara explícitamente que la base de datos a usar como predeterminado para las instrucciones SQL que no se incluyen explícitamente un nombre de base durante esta sesión interactiva.

    BÁSICOS PARA OBTENER UNA IMAGEN CLARA DE LO que SU SERVIDOR PostgresQL tiene.

    Debe conectarse a una base de datos existente para el uso de postgresql de forma interactiva. Afortunadamente, usted puede pedir psql para una lista de bases de datos:

    psql -l

    .

                                              List of databases
                   Name               | Owner  | Encoding |   Collate   |    Ctype    | Access privileges 
    ----------------------------------+-----------+----------+-------------+-------------+-------------------
     skynotify                        | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
     myapp_dev                        | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
     postgres                         | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
     ruby-getting-started_development | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
     template0                        | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify          +
                                      |           |          |             |             | skynotify=CTc/skynotify
     template1                        | skynotify | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify          +
                                      |           |          |             |             | skynotify=CTc/skynotify
    (6 rows)

    Este NO se inicia la consola interactiva, sólo salidas de un texto a partir de la tabla a la terminal.

    Como otra de las respuestas dice, postgres siempre se crea, por lo que debe usar como prueba de fallos de la base de datos cuando lo que desea es obtener la consola comenzó a trabajar en otras bases de datos. Si no hay, a continuación, la lista de las bases de datos y, a continuación, utilizar cualquiera de ellos.

    De una manera similar, seleccione las tablas de una base de datos:

    psql -d postgres -c "\dt;"

    Mi «postgres» de la base de datos no tiene tablas, pero cualquier base de datos que hace de salida será de un texto a partir de la tabla a la terminal (la salida estándar).

    Y de exhaustividad, podemos seleccionar todas las filas de una tabla demasiado:

    psql -d ruby-getting-started_development -c "SELECT * FROM widgets;"

    .

     id | name | description | stock | created_at | updated_at 
    ----+------+-------------+-------+------------+------------
    (0 rows)

    Incluso si hay cero filas devueltas, obtendrá los nombres de campo.

    Si las tablas tienen más de una docena de filas, o no estás seguro, va a ser más útil empezar con un recuento de filas para entender la cantidad de datos que está en la base de datos:

     psql -d ruby-getting-started_development -c "SELECT count(*) FROM widgets;"

    .

     count 
    -------
         0
    (1 row)

    Y no que «1 fila» confunden, sólo representa el número de filas devueltas por la consulta, pero la 1 fila contiene el número que desea, que es 0 en este ejemplo.

    NOTA: una base de datos creada sin un dueño definido será poseída por el usuario actual.

  13. 0

    He probado algunas de estas soluciones, pero no acababa de trabajo (a pesar de que eran muy mucho en el camino correcto!)

    Al final mi error fue:

    FATAL: error de autenticación de contraseña para el usuario

    cuando me encontré con el siguiente comando: psql

    Entonces me encontré estos dos comandos:

    dropdb()
    createdb()

    NOTA: este se quitar la db, pero no lo necesitaba y por alguna razón yo ya no podía acceder a pqsl, así que me quita y vuelve a crear la misma.
    Luego psql trabajó de nuevo.

  14. 0

    Conectarse a postgresql a través de superusuario.

    Crear una Base de datos el nombre de usuario que se conecta a través de postgres.

    create database username;

    Ahora, intente conectarse a través de nombre de usuario

  15. -1

    Tenido este problema al instalar postgresql a través de homebrew.

    Tuvo que crear el valor predeterminado «postgres» super usuario con:

    createuser –interactive postgres respuesta y a super usuario

    createuser –usuario interactivo de respuesta y a super usuario

  16. -2

    Aún tenía el tema después de la instalación de postgresql usando homebrew lo resuelto por poner /usr/local/bin en mi camino antes de que /usr/bin

  17. -9

    En que es la explicación más simple; es noob problema. Con solo teclear

    pgres

    resultará en esta respuesta.

    pgres <db_name> 

    tendrá éxito sin error si el usuario tiene los permisos para acceder a la db.

    Uno puede entrar en los detalles de la exportación de las variables de entorno, pero que es innecesario .. esto es demasiado básico para fallar por cualquier otra razón.

    • Realmente no le gusta el «noob tipo de problema de lenguaje»
    • También que no recomiendo de cómo resolver el problema, así que no respondió la pregunta.
    • nunca había oído hablar de pgres

Dejar respuesta

Please enter your comment!
Please enter your name here