Korzystam z aplikacji PostgreSql dla systemu Mac ( http://postgresapp.com/ ). Używałem go w przeszłości na innych komputerach, ale sprawia mi to 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 uruchomię psql z menu rozwijanego aplikacji:
Statystyki maszyny:
OSX 10.8.4
psql (PostgreSQL) 9.2.4
Każda pomoc jest mile widziana.
Próbowałem również zainstalować PostgreSql przez homebrew i otrzymuję ten sam problem. Przeczytałem również stronę dokumentacji aplikacji, która stwierdza:
Podczas pierwszego uruchomienia Postgres.app tworzy bazę danych $ USER, która jest domyślną bazą danych dla psql, gdy nie określono żadnej. Domyślnym użytkownikiem jest $ USER, bez hasła.
Wygląda na to, że aplikacja nie tworzy $ USER, jednak zainstalowałem -> odinstalowałem - ponownie zainstalowałem kilka razy, więc musi to być coś z moją maszyną.
Znalazłem odpowiedź, ale nie jestem pewien, jak dokładnie działa, ponieważ użytkownik, który odpowiedział w tym wątku -> Pierwsze uruchomienie Postgresql na Macu: Baza danych „postgres” nie istnieje, nie kontynuowała. Użyłem następującego polecenia, aby otworzyć psql:
psql -d template1
Pozostawię tę odpowiedź bez odpowiedzi, dopóki ktoś nie wyjaśni wyjaśnienia, dlaczego to działa.
źródło
psql -d postgres -U postgres -h localhost
pokazuje Bez flag domyślnie jest to użytkownik CLI i powiedziałbym, że domyślnie jest to administrator bazy danych „postgres”, ale nie mam Maca do testowania.createdb <user>
działało dla mnie.psql -U user -d postgres
, aby upewnić się, że użytkownik jest połączony z bazą danych postgres, która jest już obecna. Musimy więc przekazać bazę danych również podczas logowania.Odpowiedzi:
Wygląda na to, że menedżer pakietów nie utworzył dla Ciebie bazy danych o nazwie $ user. Powodem tego
dla ciebie działa to, że template1 to baza danych tworzona przez sam postgres i jest obecna we wszystkich instalacjach. Najwyraźniej jesteś w stanie zalogować się do template1, więc musisz mieć prawa przypisane do ciebie przez bazę danych. Spróbuj tego w wierszu poleceń:
a następnie sprawdź, czy możesz zalogować się ponownie za pomocą
Spowoduje to po prostu utworzenie bazy danych dla użytkownika logowania, który moim zdaniem jest tym, czego szukasz. Jeśli utworzony błąd nie powiedzie się, nie masz wystarczających uprawnień do stworzenia własnej bazy danych i będziesz musiał wymyślić, jak naprawić pakiet homebrew.
źródło
$ createdb -h localhost
aby rozwiązać błądcould not connect to database postgres: could not connect to server
. Następnie mogę połączyć się z konsolą postgresql za pośrednictwempsql -h localhost
.-d template1
twojego pierwszego polecenia? Widziałem „template1” w samouczkach w całym Internecie, ale tylko on mnie myli. Moim zdaniem bardziej logicznym rozwiązaniem byłoby 1) Utwórz użytkownika PostgreSQL, np. „Usera” 2) Utwórz bazę danych o tej samej nazwie co użytkownik „usera” (myślę, że to szalone, ale wygląda na to, że PostgreSQL tego wymaga) 3) Zaloguj się do PostgreSQL jako superużytkownik „postgres” i przypisz uprawnienia do bazy danych „usera” użytkownikowi „usera” (o mój Boże, czy to naprawdę prawdziwe życie?)Z terminala wystarczy uruchomić polecenie w oknie wiersza polecenia. (Nie w psql) .
A następnie spróbuj ponownie uruchomić postgres.
źródło
createdb
Domyślnie postgres próbuje połączyć się z bazą danych o tej samej nazwie co użytkownik. Aby temu zapobiec, po prostu określ użytkownika i bazę danych:
źródło
psql -U Username -f create_db.sql
to zwróci błąd:database Username doesn't exists
psql -U Username postgres
gdy nie masz jeszcze baz danychsudo -i -u postgres
createuser --interactive
createdb <username_from_step_3>
psql
w wierszu polecenia.psql (x.x.x) Type "help" for help.
źródło
Zaloguj się przy użyciu domyślnej bazy danych template1:
Utwórz bazę danych za pomocą identyfikatora użytkownika:
Wyjdź, a następnie zaloguj się ponownie
źródło
Napotkałem ten sam błąd podczas próby otwarcia postgresql na Macu
Znalazłem to proste polecenie, aby je rozwiązać:
metoda1
i wpisz
Metoda 2:
źródło
Miałem ten sam problem, wystarczyło
psql -d postgres
to zrobić (wpisz polecenie w terminalu)źródło
Ten błąd może również wystąpić, jeśli zmienna środowiskowa PGDATABASE jest ustawiona na nazwę bazy danych, która nie istnieje.
W OSX widziałem następujący błąd podczas próby uruchomienia psql z menu Postgress.app:
psql: FATAL: database "otherdb" does not exist
Rozwiązaniem tego błędu było usunięcie
export PGDATABASE=otherdb
z~/.bash_profile
:Ponadto, jeśli PGUSER jest ustawiony na coś innego niż twoja 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
.źródło
Po instalacji postgres, w moim przypadku jest wersja 12.2, uruchomiłem poniższe polecenie
createdb
.źródło
Ponieważ to pytanie jest pierwsze w wynikach wyszukiwania, i tak przedstawię tutaj inne rozwiązanie innego problemu, aby nie mieć duplikatu tytułu.
Ten sam komunikat o błędzie może pojawić się podczas uruchamiania pliku zapytania
psql
bez określania bazy danych. Ponieważuse
w postgresql nie ma instrukcji, musimy podać bazę danych w wierszu poleceń, na przykład:źródło
Jak stwierdza dokumentacja utworzonab :
Więc jeśli niektóre dystrybucje OS / postgresql robią to inaczej, z pewnością nie jest to domyślny / standardowy (właśnie zweryfikowałem, że
initdb
w openSUSE 13.1 tworzy DB „postgres”, ale nie „<użytkownik>”). Krótko mówiąc,psql -d postgres
oczekuje się, że będzie używany, gdy użytkownik będzie inny niż „postgres”.Oczywiście zaakceptowana odpowiedź, uruchomiona w
createdb
celu utworzenia bazy danych o nazwie takiej jak użytkownik, również działa, ale tworzy zbędną bazę danych.źródło
miał problem z użyciem sterownika JDBC, więc wystarczy dodać bazę danych (być może zbędnie w zależności od używanego narzędzia) 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
źródło
Połącz się z postgres za pośrednictwem istniejącego administratora.
Utwórz bazę danych według nazwy użytkownika, przez który łączysz się z postgres.
Teraz spróbuj połączyć się za pomocą nazwy użytkownika
źródło
Spróbuj użyć-
psql -d postgres
Kiedy biegałem, miałem również ten sam problem
psql
źródło
Po pierwsze, pomocne jest utworzenie bazy danych o tej samej nazwie, co bieżące użycie, aby uniknąć błędu, gdy chcesz po prostu użyć domyślnej bazy danych i utworzyć nowe tabele bez jawnego podawania nazwy bazy danych.
Zamień „skynotify” na swoją nazwę użytkownika:
-d wyraźnie deklaruje, której bazy danych użyć jako domyślnej dla instrukcji SQL, które nie zawierają jawnie nazwy db podczas tej interaktywnej sesji.
PODSTAWY UZYSKANIA WYRAŹNEGO OBRAZU CO SERWER PostgresQL.
Musisz połączyć się z istniejącą bazą danych, aby korzystać z psql interaktywnie. Na szczęście możesz poprosić psql o listę baz danych:
.
To NIE uruchamia interaktywnej konsoli, po prostu wysyła tabelę tekstową do terminala.
Jak mówi inna odpowiedź, postgres jest zawsze tworzony, więc powinieneś używać go jako bezpiecznej bazy danych, gdy chcesz, aby konsola zaczęła działać na innych bazach danych. Jeśli go nie ma, to wypisz bazy danych, a następnie użyj dowolnej z nich.
W podobny sposób wybierz tabele z bazy danych:
Moja baza danych „postgres” nie ma tabel, ale każda baza danych wyśle tabelę tekstową do terminala (standardowe wyjście).
I dla kompletności możemy również wybrać wszystkie wiersze z tabeli:
.
Nawet jeśli zwróconych zostanie zero wierszy, otrzymasz nazwy pól.
Jeśli tabele zawierają więcej niż tuzin wierszy lub nie masz pewności, bardziej przydatne będzie rozpoczęcie od liczby wierszy, aby zrozumieć, ile danych znajduje się w bazie danych:
.
I nie to, że „1 wiersz” myli cię, to po prostu reprezentuje liczbę wierszy zwróconych przez zapytanie, ale 1 wiersz zawiera liczbę, którą chcesz, czyli 0 w tym przykładzie.
UWAGA: baza danych utworzona bez zdefiniowanego właściciela będzie własnością bieżącego użytkownika.
źródło
Wypróbowałem niektóre z tych rozwiązań, ale nie do końca działały (choć były na dobrej drodze!)
Ostatecznie mój błąd to:
kiedy uruchomiłem następujące polecenie:
psql
Więc uruchomiłem te dwa polecenia:
UWAGA: spowoduje to usunięcie db, ale nie potrzebowałem go iz jakiegoś powodu nie mogłem już uzyskać dostępu do pqsl, więc usunąłem go i ponownie utworzyłem. Potem
psql
znów pracował.źródło
Nie jestem pewien, czy jest już dodany w odpowiedziach, odpowiedź Anatolija Stepaniuka była bardzo pomocna, co jest następujące.
źródło
Miałem ten problem podczas instalowania postgresql przez homebrew.
Musiałem utworzyć domyślnego superużytkownika „postgres” z:
źródło
Nadal miałem powyższy problem po zainstalowaniu postgresql przy użyciu homebrew - Rozwiązałem go, umieszczając / usr / local / bin na mojej ścieżce przed / usr / bin
źródło
W najprostszym wyjaśnieniu; to problem nooba. Po prostu piszę
spowoduje tę odpowiedź.
odniesie sukces bez błędu, jeśli użytkownik ma uprawnienia dostępu do bazy danych.
Można przejść do szczegółów wyeksportowanych zmiennych środowiskowych, ale jest to niepotrzebne ... jest to zbyt podstawowe, aby zawieść z jakiegokolwiek innego powodu.
źródło
pgres