Rails i PostgreSQL: rola postgres nie istnieje

Zainstalowałem PostgreSQL na moim Mac OS Lion i pracuję nad aplikacją rails. Używam RVM do oddzielania wszystkiego od innych aplikacji Rails.

Z jakiegoś powodu, gdy próbuję przenieść db po raz pierwszy rake nie może znaleźć użytkownika postgres. I get the error

 FATAL:  role "postgres" does not exist

Mam pgAdmin więc wyraźnie widzę, że w DB jest użytkownik postgres - w rzeczywistości konto admin-więc nie wiem co jeszcze zrobić.

Czytałem gdzieś o ludziach mających problemy z PostgreSQL ze względu na to, w której ścieżce został zainstalowany, ale wtedy nie sądzę, bym posunął się tak daleko, gdyby nie mógł znaleźć db.

Author: Erwin Brandstetter, 2011-10-23

12 answers

Ten komunikat pojawia się, gdy użytkownik bazy danych nie istnieje. Porównaj instrukcję tutaj .
Wiele lokalnych baz danych nie może być wyjaśnieniem. Role są ważne dla całego klastra. Instrukcja ponownie :

Zauważ, że role są zdefiniowane na poziomie klastra bazy danych, a więc są obowiązuje we wszystkich bazach danych w klastrze.

Musisz być w innym database-cluster . To byłby kolejny serwer działający na tym samym maszyna nasłuchuje innego portu. Lub, bardziej prawdopodobne, na innej maszynie.

Czy to możliwe, że wiadomość pochodzi w rzeczywistości ze zdalnego serwera?

 11
Author: Erwin Brandstetter,
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
2011-10-23 05:09:17

Właściwie, z jakiegoś nieznanego powodu, znalazłem problem, ponieważ rola postgresql nie została stworzona.

Spróbuj uruchomić:

createuser -s -r postgres

Zauważ, że role są sposobem, w jaki PostgreSQL utrzymuje uprawnienia do bazy danych . Jeśli użytkownik postgres nie ma roli, to nie ma dostępu do niczego. Polecenie createuser jest cienkim opakowaniem wokół poleceń CREATE USER, CREATE ROLE itp.

 241
Author: Chris Sherlock,
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
2012-12-26 12:09:47

Ostatnio mam ten problem od razu po zainstalowaniu postgresa. Jeśli pojawi się natychmiast po instalacji, może zabraknąć domyślnego użytkownika, postgres. W takim przypadku możesz utworzyć domyślny Postgres użytkownika używając poniższego polecenia.

Createuser-s-U $USER

Ex: createuser -s -U $USER
enter your required role name: postgres
enter password for your the user: 

Wyświetli monit o podanie wymaganej nazwy roli bazy danych i hasła Po zakończeniu procesu możesz zalogować się do konsoli postgres używając poniższego polecenia

psql -U 'your_database_name'

Ex: psql-U postgres
Tutaj musisz wprowadzić hasło, jeśli podałeś jakiekolwiek, podczas tworzenia użytkownika.

Mam nadzieję, że pomoże:)

 26
Author: Prem,
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
2012-12-05 05:02:29

Byłem na OSX 10.8 i wszystko, co próbowałem, dawało mi FATAL: role "USER" does not exist. Jak wiele osób powiedziało tutaj, run createuser -s USER, ale to dało mi ten sam błąd. W końcu mi się udało:

$ sudo su
# su postgres
# createuser -s --username=postgres MYUSERNAME

createuser -s --username=postgres tworzy znacznik superużytkownika (-s), łącząc się jako znacznik postgres (--username=znacznik postgres).

Widzę, że odpowiedź na twoje pytanie została udzielona, ale chcę dodać tę odpowiedź dla osób korzystających z OSX próbujących zainstalować PostgreSQL 9.2.4.

 21
Author: Jack,
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-06-16 16:06:49

Spotkałem się z tym problemem, kiedy po raz pierwszy instalowałem Postgres Heroku.aplikacja. Po jednym porannym próbach i błędach myślę, że ta jedna linia kodu rozwiązała problem. Jak opisano wcześniej, dzieje się tak dlatego, że postgresql nie ma domyślnej roli przy pierwszym skonfigurowaniu. Musimy to ustawić.

sovanlandy=# CREATE ROLE postgres LOGIN;

Musisz zalogować się do odpowiedniej konsoli psql, aby użyć tej komendy psql.

Zauważ również, że jeśli już utworzyłeś rolę 'postgre' , ale nadal masz błędy uprawnień, możesz trzeba zmienić poleceniem:

sovanlandy=# ALTER ROLE postgres LOGIN;
Mam nadzieję, że to pomoże!
 9
Author: sovanlandy,
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-02-25 03:31:47

W dokumentacji Heroku; pierwsze kroki w Rails 4 mówią:

Konieczne będzie również usunięcie pola Nazwa użytkownika w bazie danych.yml jeśli istnieje tak: w pliku config / database.YML Usuń: nazwa użytkownika: myapp

Wtedy wystarczy usunąć ten wiersz w " development:", jeśli nie PG mówi do bazy danych, która działa w roli "myapp"

Ta linia mówi rails, że baza danych myapp_development powinna być uruchom w roli myapp. Od prawdopodobnie nie masz tej roli w twoja baza danych zostanie usunięta. Z linii Usuń szyny spróbuje dostępu do bazy danych jako użytkownik aktualnie zalogowany do komputer.

Pamiętaj również, aby utworzyć bazę danych do rozwoju:

$createdb myapp_development

Replece "myapp" dla nazwy aplikacji

 4
Author: Yunrock,
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-11-21 07:15:41

Czy można mieć wiele lokalnych baz danych? Sprawdź swoją database.yml i upewnij się, że trafiasz do PG db, które chcesz. Użyj rails console, aby potwierdzić.

 2
Author: Jonathan Julian,
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
2011-10-23 04:35:54

W wierszu polecenia lokalnego użytkownika Ubuntu, ale nie użytkownika root, wpisz

Sudo-u Postgres createuser username

Nazwa użytkownika powyżej powinna pasować do nazwy wskazanej w wiadomości "FATAL: Rola' Nazwa użytkownika ' nie istnieje."

Wprowadź hasło do nazwy użytkownika.

Następnie Ponownie wprowadź polecenie, że wygenerowana rola nie istnieje wiadomość.

 1
Author: Robert Cambil,
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-06-21 20:51:38

Wylądowałem tutaj po próbie śledzenia samouczka Ryana Bate ' a na temat wdrażania do AWS EC2 z gumą. Oto co się dla mnie stało: Stworzyliśmy nową aplikację przy użyciu "

rails new blog -d postgresql

Oczywiście tworzy to nową aplikację z PG jako bazy danych, ale baza danych nie została jeszcze wykonana. Z sqlite po prostu uruchamiasz rake db: migrate, jednak z pg musisz najpierw utworzyć bazę danych pg. Ryan nie zrobił tego kroku. Poleceniem jest rake db:create:all, wtedy możemy uruchomić rake db:migrate

Druga część się zmienia baza danych.plik yml. Domyślną nazwą użytkownika podczas generowania pliku jest 'appname'. Jednak, są szanse, że Twoja rola dla admina postgresql jest czymś innym(przynajmniej dla mnie). Zmieniłem go na moje nazwisko (patrz powyżej porady dotyczące tworzenia nazwy roli) i byłem dobry, aby przejść.

Mam nadzieję, że to pomoże.
 0
Author: Andrew Shenstone,
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-10-21 21:47:50

Po kilku instalacjach i odinstalowaniu Postgres, oto co teraz wydaje mi się działać konsekwentnie z Os X Mavericks, Rails 4 i Ruby 2.

  1. W bazie danych.plik yml, zmieniam domyślne nazwy użytkowników na nazwę użytkownika mojego komputera, która dla mnie jest po prostu "admin".

  2. W wierszu poleceń uruchamiam rake db: create: all

  3. Następnie uruchamiam rake db: migrate

  4. Kiedy uruchamiam serwer rails i sprawdzam lokalnego hosta to pisze " Welcome na pokładzie".

 0
Author: Michael van Holst,
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-11-06 19:34:06

Moja odpowiedź była o wiele prostsza. Po prostu poszedłem do folderu db i usunąłem kolumnę id, którą próbowałem siłą utworzyć, ale która jest faktycznie tworzona automagicznie. Usunąłem również nazwę użytkownika w bazie danych.plik yml (w folderze config).

 0
Author: maudulus,
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-18 12:43:00

Możesz być w stanie obejść to, uruchamiając initdb -U postgres -D /path/to/data lub uruchamiając go jako użytkownika postgres, ponieważ domyślnie jest to bieżący użytkownik. GL!

 0
Author: rogerdpack,
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-10-09 17:33:13