Estoy usando la aplicación PostgreSql para mac ( http://postgresapp.com/ ). Lo he usado en el pasado en otras máquinas, pero me está dando algunos problemas al instalarlo en mi macbook. Instalé la aplicación y ejecuté:
psql -h localhost
Vuelve:
psql: FATAL: database "<user>" does not exist
Parece que ni siquiera puedo ejecutar la consola para crear la base de datos que intenta encontrar. Lo mismo sucede cuando acabo de correr:
psql
o si ejecuto psql desde el menú desplegable de la aplicación:
Estadísticas de la máquina:
OSX 10.8.4
psql (PostgreSQL) 9.2.4
Cualquier ayuda es apreciada.
También intenté instalar PostgreSql a través de homebrew y obtengo el mismo problema. También he leído la página de documentación de aplicaciones que dice:
Cuando Postgres.app se inicia por primera vez, crea la base de datos $ USER, que es la base de datos predeterminada para psql cuando no se especifica ninguno. El usuario predeterminado es $ USER, sin contraseña.
Entonces parece que la aplicación no está creando $ USER, sin embargo, he instalado-> desinstalado-reinstalado varias veces ahora, por lo que debe ser algo con mi máquina.
Encontré la respuesta, pero no estoy seguro de cómo funciona exactamente, ya que el usuario que respondió en este hilo -> Hacer que Postgresql se ejecute en Mac: la base de datos "postgres" no existe . Usé el siguiente comando para abrir psql:
psql -d template1
Dejaré este sin respuesta hasta que alguien pueda proporcionar una explicación de por qué esto funciona.
fuente
psql -d postgres -U postgres -h localhost
muestra? Sin indicadores, el valor predeterminado es el usuario de la CLI, y yo habría dicho que el valor predeterminado es el administrador de base de datos "postgres", pero no tengo una mac para probar.createdb <user>
funcionó para mí.psql -U user -d postgres
, esto asegura que el usuario esté conectado a la base de datos postgres, que ya está presente. Por lo tanto, debemos pasar la base de datos también al iniciar sesión.Respuestas:
Parece que su administrador de paquetes no pudo crear la base de datos denominada $ user para usted. La razón que
funciona para usted es que template1 es una base de datos creada por el propio postgres, y está presente en todas las instalaciones. Aparentemente puede iniciar sesión en template1, por lo que debe tener algunos derechos asignados por la base de datos. Pruebe esto en un indicador de shell:
y luego vea si puede volver a iniciar sesión con
Esto simplemente creará una base de datos para su usuario de inicio de sesión, que creo que es lo que está buscando. Si createdb falla, entonces no tiene suficientes derechos para crear su propia base de datos, y tendrá que descubrir cómo solucionar el paquete homebrew.
fuente
$ createdb -h localhost
para resolver el errorcould not connect to database postgres: could not connect to server
. Después de eso me puedo conectar a la consola postgresql a través depsql -h localhost
.-d template1
en su primer comando? He visto "template1" en tutoriales en todo Internet pero solo sirve para confundirme. Un enfoque más lógico sería, en mi opinión, 1) Crear el usuario de PostgreSQL, por ejemplo, "usera" 2) Crear una base de datos con el mismo nombre que el usuario "usera" (Creo que esto es una locura, pero parece que PostgreSQL lo requiere) 3) Inicie sesión en PostgreSQL como el superusuario "postgres" y asigne los privilegios de la base de datos "usera" al usuario "usera" (oh, Dios mío, ¿es realmente la vida real?)Desde la terminal, simplemente ejecute el comando en la ventana del símbolo del sistema. (No dentro de psql) .
Y luego intente ejecutar postgres nuevamente.
fuente
createdb
Por defecto, postgres intenta conectarse a una base de datos con el mismo nombre que su usuario. Para evitar este comportamiento predeterminado, solo especifique el usuario y la base de datos:
fuente
psql -U Username -f create_db.sql
esto devolverá el error:database Username doesn't exists
psql -U Username postgres
cuando aún no tienes bases de datossudo -i -u postgres
createuser --interactive
createdb <username_from_step_3>
psql
en el símbolo del sistema.psql (x.x.x) Type "help" for help.
fuente
Inicie sesión con la base de datos predeterminada template1:
Cree una base de datos con su ID de usuario:
Salga y vuelva a iniciar sesión
fuente
Me enfrenté al mismo error cuando intenté abrir postgresql en mac
Encontré este comando simple para resolverlo:
Método 1
y escribe
Método 2:
fuente
Tuve el mismo problema, un simple lo
psql -d postgres
hizo (Escriba el comando en la terminal)fuente
Este error también puede ocurrir 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 intentar iniciar psql desde el menú Postgress.app:
psql: FATAL: database "otherdb" does not exist
La solución al error fue eliminar
export PGDATABASE=otherdb
de~/.bash_profile
:Además, si PGUSER está configurado en algo diferente a 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
.fuente
Después de la instalación de postgres, en mi caso la versión es la 12.2, ejecuté el siguiente comando
createdb
.fuente
Como esta pregunta es la primera en los resultados de búsqueda, de todas formas pondré una solución diferente para un problema diferente, para no tener un título duplicado.
El mismo mensaje de error puede aparecer al ejecutar un archivo de consulta
psql
sin especificar una base de datos. Como no hay unause
declaración en postgresql, tenemos que especificar la base de datos en la línea de comando, por ejemplo:fuente
Como dice la documentación de createdb :
Entonces, si ciertas distribuciones de OS / postgresql lo hacen de manera diferente, ciertamente no es el estándar / predeterminado (solo verificó que
initdb
en openSUSE 13.1 crea el DB "postgres", pero no "<user>"). En pocas palabras,psql -d postgres
se espera que se use cuando se usa un usuario que no sea "postgres".Obviamente, la respuesta aceptada, que se ejecuta
createdb
para crear un DB llamado como el usuario, también funciona, pero crea un DB superfluo.fuente
tuvo el problema con el uso del controlador JDBC, por lo que uno solo tiene que agregar la base de datos (tal vez de forma redundante dependiendo de la herramienta que pueda usar) después del nombre de host en la URL, por ejemplo
jdbc:postgres://<host(:port)>/<db-name>
Aquí se documentan más detalles: http://www.postgresql.org/docs/7.4/static/jdbc-use.html#JDBC-CONNECT
fuente
Conéctese a postgres a través del superusuario existente.
Cree una base de datos con el nombre del usuario al que se está conectando a postgres.
Ahora intenta conectarte por nombre de usuario
fuente
Intenta usar
psql -d postgres
También estaba enfrentando el mismo problema cuando corrí
psql
fuente
En primer lugar, es útil crear una base de datos con el mismo nombre que su uso actual, para evitar el error cuando solo desea usar la base de datos predeterminada y crear nuevas tablas sin declarar explícitamente el nombre de una base de datos.
Reemplace "skynotify" con su nombre de usuario:
-d declara explícitamente qué base de datos usar como predeterminada para las instrucciones SQL que no incluyen explícitamente un nombre de base de datos durante esta sesión interactiva.
BÁSICOS PARA OBTENER UNA IMAGEN CLARA DE LO QUE TIENE SU SERVIDOR PostgresQL en él.
Debe conectarse a una base de datos existente para usar psql de forma interactiva. Afortunadamente, puede pedirle a psql una lista de bases de datos:
.
Esto NO inicia la consola interactiva, solo emite una tabla basada en texto al terminal.
Como dice otra respuesta, postgres siempre se crea, por lo que debe usarlo como su base de datos a prueba de fallas cuando solo desea que la consola comience a funcionar en otras bases de datos. Si no está allí, enumere las bases de datos y luego use cualquiera de ellas.
De manera similar, seleccione tablas de una base de datos:
Mi base de datos "postgres" no tiene tablas, pero cualquier base de datos que lo haga generará una tabla basada en texto al terminal (salida estándar).
Y para completar, también podemos seleccionar todas las filas de una tabla:
.
Incluso si se devuelven cero filas, obtendrá los nombres de campo.
Si sus tablas tienen más de una docena de filas, o no está seguro, será más útil comenzar con un recuento de filas para comprender cuántos datos hay en su base de datos:
.
Y no te confunda esa "1 fila", solo representa cuántas filas devuelve la consulta, pero la 1 fila contiene el recuento que deseas, que es 0 en este ejemplo.
NOTA: una base de datos creada sin un propietario definido será propiedad del usuario actual.
fuente
Probé algunas de estas soluciones, pero no funcionaron (¡aunque estaban en el camino correcto!)
Al final mi error fue:
cuando ejecuté el siguiente comando:
psql
Entonces ejecuté estos dos comandos:
NOTA: este se retire el PP, pero no lo necesitamos, y por alguna razón ya no podía PQSL acceso, por lo que eliminar y crear de ella. Luego
psql
trabajó de nuevo.fuente
No estoy seguro si ya se agregó en las respuestas, la respuesta de Anatolii Stepaniuk fue muy útil, que es la siguiente.
fuente
Tuve este problema al instalar postgresql a través de homebrew.
Tuve que crear el superusuario "postgres" predeterminado con:
fuente
Todavía tenía el problema anterior después de instalar postgresql usando homebrew: lo resolví poniendo / usr / local / bin en mi ruta antes de / usr / bin
fuente
En su explicación más simple; Es un problema novato. Solo escribiendo
dará como resultado esta respuesta.
tendrá éxito sin error si el usuario tiene los permisos para acceder a la base de datos.
Uno puede entrar en los detalles de las variables de entorno exportadas, pero eso es innecesario ... esto es demasiado básico para fallar por cualquier otra razón.
fuente
pgres