psql: FATAL: database "" nie istnieje

Używam aplikacji PostgreSql dla mac ( http://postgresapp.com/). używałem go w przeszłości na innych komputerach, ale sprawia mi to pewne problemy podczas instalacji na moim MacBooku. Zainstalowałem aplikację i uruchomiłem:

psql -h localhost

Zwraca:

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

Wygląda na to, że nie mogę nawet uruchomić konsoli, aby utworzyć bazę danych, którą próbuje znaleźć. To samo dzieje się, gdy po prostu biegam:

psql 

Lub jeśli uruchamiam psql z rozwijanej aplikacji menu:

Statystyki Maszyny:

  • OSX 10.8.4

  • Psql (PostgreSQL) 9.2.4

Każda pomoc jest mile widziana.

Próbowałem również zainstalować PostgreSql poprzez homebrew i mam ten sam problem. Przeczytałem również stronę dokumentacji aplikacji, która stwierdza:

Gdy Postgres.aplikacja najpierw się uruchamia, tworzy bazę danych $USER, która jest domyślną bazą danych dla psql, gdy nie jest określona. Na domyślnym użytkownikiem jest $USER, bez hasła.

Więc wydaje się, że aplikacja nie tworzy $USER jednak zainstalowałem- > uninstalled-ponownie zainstalowałem kilka razy teraz, więc to musi być coś z moim komputerem.

Znalazłem odpowiedź, ale nie jestem pewien dokładnie, jak to działa, ponieważ użytkownik, który odpowiedział w tym wątku - > uruchamiając Postgresql na Macu: baza danych "postgres" nie istnieje nie poszedł dalej. Użyłem następującego polecenia, aby otworzyć psql:

psql -d template1

ja zostaw to bez odpowiedzi, dopóki ktoś nie wyjaśni, dlaczego to działa.

Author: Community, 2013-07-13

17 answers

Wygląda na to, że menadżer pakietów nie utworzył dla Ciebie bazy danych o nazwie $user. Powód, dla którego

psql -d template1

Działa dla ciebie to, że template1 jest bazą danych stworzoną przez postgres i jest obecna we wszystkich instalacjach. Widocznie jesteś w stanie zalogować się do template1, więc musisz mieć pewne prawa przypisane do ciebie przez bazę danych. Spróbuj tego w wierszu polecenia powłoki:

createdb

A następnie sprawdź, czy możesz zalogować się ponownie za pomocą

psql -h localhost

To po prostu utworzy bazę danych dla Twój login użytkownika, który myślę, że jest to, czego szukasz. Jeśli createdb nie powiedzie się, wtedy nie masz wystarczających praw, aby utworzyć własną bazę danych, i będziesz musiał dowiedzieć się, jak naprawić pakiet homebrew.

 896
Author: Kirk Roybal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-29 23:40:57

Domyślnie postgres próbuje połączyć się z bazą danych o tej samej nazwie co użytkownik. Aby zapobiec temu domyślnemu zachowaniu, po prostu podaj user I bazę danych:

psql -U Username DatabaseName 
 97
Author: Aneer Anwar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-11 18:54:18

Z terminala Uruchom polecenie w oknie wiersza polecenia. (Nie wewnątrz psql) .

createdb <user>

I spróbuj ponownie uruchomić postgres.

 93
Author: Dhananjay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-13 09:11:51
  1. Login as default user: sudo -i -u postgres
  2. Utwórz nowego Użytkownika: createuser --interactive
  3. Gdy pojawi się monit o nazwę roli, wprowadź nazwę użytkownika Linuksa i wybierz pytanie tak dla superużytkownika.
  4. nadal zalogowany jako użytkownik postgres, Utwórz bazę danych: createdb <username_from_step_3>
  5. potwierdź, że błędy zniknęły, wpisując: psql w wierszu polecenia.
  6. wyjście powinno pokazać psql (x.x.x) Type "help" for help.
 41
Author: user286539,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-03 19:52:46

Logowanie przy użyciu domyślnej bazy 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)

Utwórz bazę danych z userId:

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

Quit and then login again

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)
 33
Author: spicyramen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-24 07:54:50

Napotkałem ten sam błąd, gdy próbowałem otworzyć postgresql na Macu

psql: FATAL:  database "user" does not exist

Znalazłem takie proste polecenie, aby go rozwiązać:

Method1

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

I typ

 psql

Metoda 2:

psql -d postgres
 11
Author: Dinesh Pallapa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-10 03:40:25

Ten błąd może również wystąpić, jeśli zmienna środowiskowa PGDATABASE jest ustawiona na nazwę nieistniejącej bazy danych.

Na OSX, widziałem następujący błąd podczas próby uruchomienia psql z Postgress.menu aplikacji:

psql: FATAL: database "otherdb" does not exist

Rozwiązaniem błędu było usunięcie export PGDATABASE=otherdb z ~/.bash_profile:

Ponadto, jeśli PGUSER jest ustawiony na coś innego niż nazwa użytkownika, wystąpi następujący błąd:

psql: FATAL: role "note" does not exist

Rozwiązaniem jest usunięcie export PGUSER=notme z ~/.bash_profile.

 5
Author: sdhca,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-26 03:33:09

Jak stwierdza createdb documentation :

Pierwsza baza danych jest zawsze tworzona przez polecenie initdb podczas inicjalizacji obszaru przechowywania danych... Ta baza danych nazywa się postgres.

Więc jeśli niektóre dystrybucje OS / postgresql robią to inaczej, z pewnością nie jest to domyślny / standardowy (tylko sprawdzono, że initdb Na openSUSE 13.1 tworzy DB "postgres", ale nie " "). W skrócie, psql -d postgres ma być używany przy użyciu użytkownika innego niż "postgres".

Oczywiście przyjęta odpowiedź, uruchamiając createdb, aby utworzyć DB o nazwie takiej jak użytkownik, działa również, ale tworzy zbędny DB.

 4
Author: user686249,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-24 13:24:09

Ponieważ to pytanie jest pierwsze w wynikach wyszukiwania, i tak umieszczę inne rozwiązanie dla innego problemu, aby nie mieć duplikatu tytułu.

Ten sam komunikat o błędzie może pojawić się podczas uruchamiania pliku zapytania w psql bez podawania bazy danych. Ponieważ w postgresql nie ma Instrukcji use, musimy określić bazę danych w wierszu poleceń, na przykład:

psql -d db_name -f query_file.sql
 3
Author: Babken Vardanyan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-17 09:58:29

Miał ten sam problem, zrobił to prosty psql -d postgres (wpisz polecenie w Terminalu)

 3
Author: Djamal Dagirov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-05 08:42:14

Miałem problem z używaniem sterownika JDBC, więc wystarczy dodać bazę danych (może nadmiarowo w zależności od narzędzia, którego możesz użyć) po nazwie hosta w adresie URL, np. jdbc:postgres://<host(:port)>/<db-name>

Dalsze szczegóły są udokumentowane tutaj: http://www.postgresql.org/docs/7.4/static/jdbc-use.html#JDBC-CONNECT

 1
Author: Andreas Dietrich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-26 13:38:50

Wypróbowałem niektóre z tych rozwiązań ,ale nie do końca działały (choć były bardzo na dobrej drodze!)

W końcu mój błąd był:

FATAL: uwierzytelnianie hasła nie powiodło się dla użytkownika

Kiedy uruchomiłem następujące polecenie: psql

Więc uruchomiłem te dwie komendy:

dropdb()
createdb()

Uwaga: to usunie db, ale nie potrzebowałem go i z jakiegoś powodu nie mogłem już uzyskać dostępu do pqsl, więc usunąłem i odtworzyłem go. Then psql znowu zadziałało.

 0
Author: Ben Cartwright,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-03 00:08:58

Po pierwsze, pomocne jest utworzenie bazy danych o takiej samej nazwie, jak obecne użycie, aby zapobiec błędowi, gdy chcesz użyć domyślnej bazy danych i utworzyć nowe tabele bez jawnego deklarowania nazwy db.

Zastąp "skynotify" swoją nazwą użytkownika:

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

- D jawnie deklaruje, której bazy danych użyć jako domyślnej dla poleceń SQL, które nie zawierają jawnie nazwy db podczas tej interaktywnej sesji.

PODSTAWY UZYSKANIA JASNEGO OBRAZU Co ma w sobie twój serwer PostgresQL.

Aby interaktywnie korzystać z psql, musisz połączyć się z istniejącą bazą danych. Na szczęście możesz poprosić psql o listę baz danych:
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)

To nie uruchamia interaktywnej konsoli, tylko wysyła tabelę tekstową do terminala.

Jak mówi inna odpowiedź, postgres jest zawsze tworzony, więc powinieneś używać go jako bazy danych, gdy chcesz, aby konsola zaczęła działać na innych bazach danych. Jeśli go nie ma, wymień bazy danych i użyj dowolnej z nich.

W podobny sposób wybierz tabele z bazy danych:

psql -d postgres -c "\dt;"

Moja baza danych "postgres" nie ma tabel, ale każda baza danych, która to zrobi, wyświetli tabelę tekstową do terminala (standard out).

I dla kompletności możemy również wybrać wszystkie wiersze z tabeli:

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

.

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

Nawet jeśli zwrócono zero wierszy, otrzymasz nazwy pól.

Jeśli Twoje stoły mają więcej jeśli nie masz pewności, lepiej będzie zacząć od liczby wierszy, aby zrozumieć, ile Danych znajduje się w Twojej bazie danych:

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

.

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

I nie myśl, że "1 wiersz" myli cię, po prostu reprezentuje ile wierszy jest zwracanych przez zapytanie, ale 1 wiersz zawiera żądaną liczbę, która jest 0 w tym przykładzie.

Uwaga: db utworzone bez zdefiniowanego właściciela będzie własnością bieżącego użytkownika.

 -1
Author: Sky Notify,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-15 06:12:35

Miałem ten problem podczas instalacji postgresql przez homebrew.

Musiał utworzyć domyślnego super użytkownika "postgres" z:

Createuser --interactive postgres answer y to for super user

Createuser --interactive user answer y to for super user

 -1
Author: unom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-26 09:59:12

Nadal miałem powyższy problem po zainstalowaniu postgresql przy użyciu homebrew-rozwiązałem go umieszczając /usr / local / bin w mojej ścieżce przed / usr / bin

 -2
Author: matw50,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-02 01:40:29

Jeśli pojawia się ten błąd podczas wdrażania projektu Rails z Capistrano, możesz chcieć utworzyć bazę danych na swoim zdalnym serwerze.

Zaloguj się do swojego Ubuntu i uruchom:

sudo -u postgres psql

Wprowadź hasło użytkownika postgres, Jeśli pojawi się monit. Teraz Utwórz swoją bazę danych wpisując:

CREATE DATABASE dbname_production;

Nazwa musi być tą, którą podałeś w shared/config/database.yml na serwerze produkcyjnym.

Wyjdź przez wejście \q

 -3
Author: The Whiz of Oz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-28 06:36:33

W najprostszym wyjaśnieniu; to problem nooba. Just typing

Pgres

Spowoduje taką odpowiedź.

pgres <db_name> 

Powiedzie się bez błędu, jeśli użytkownik ma uprawnienia dostępu do bazy danych.

Można przejść do szczegółów eksportowanych zmiennych środowiskowych, ale jest to niepotrzebne .. jest to zbyt proste, aby nie z jakiegokolwiek innego powodu.

 -6
Author: John Doe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-18 02:27:20