Zainstalowałem PostgreSQL na moim Mac OS Lion i pracuję nad aplikacją railsową. Używam RVM, aby oddzielić wszystko od moich innych aplikacji Railsowych.
Z jakiegoś powodu, kiedy próbuję przenieść bazę danych po raz pierwszy, rake nie może znaleźć użytkownika postgres. Otrzymuję błąd
FATAL: role "postgres" does not exist
Mam pgAdmin, więc wyraźnie widzę, że w DB jest użytkownik postgres - w rzeczywistości konto administratora - więc nie jestem pewien, co jeszcze zrobić.
Czytałem gdzieś o ludziach mających problemy z PostgreSQL z powodu tego, w której ścieżce został zainstalowany, ale nie sądzę, żebym zaszedł tak daleko, gdyby nie mógł znaleźć bazy danych.
postgres
nie został utworzony, co może prowadzić do tego samego komunikatu o błędzie, zobacz to powiązane pytanie: stackoverflow.com/questions/11919391/ ...Odpowiedzi:
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 obowiązują w całym klastrze. Instrukcja ponownie :
Musisz znaleźć się w innym klastrze baz danych . To byłby inny serwer działający na tej samej maszynie, nasłuchujący na innym porcie. Lub, co bardziej prawdopodobne, na innym komputerze.
Czy to możliwe, że wiadomość faktycznie pochodzi ze zdalnego serwera?
źródło
docker rmi $(docker images -q) --force
. ale problem byłvolumes
chyba naWłaściwie z nieznanego powodu stwierdziłem, że problem polegał na tym, że rola postgresql nie została utworzona.
Spróbuj biegać:
Zauważ, że role to sposób, w jaki PostgreSQL utrzymuje uprawnienia do bazy danych . Jeśli nie ma roli dla użytkownika postgres, to nie ma do niczego dostępu. Polecenie createuser to cienkie opakowanie wokół poleceń CREATE USER, CREATE ROLE itp.
źródło
sudo su - postgres
zanim to polecenie zadziałało dla mnie. Dzięki!-r
opcja nie jest konieczna w przypadku-s
opcji. Superuser zawiera atrybut „Utwórz rolę”.Ostatnio mam ten problem zaraz po zainstalowaniu postgres. Jeśli pojawia się natychmiast po instalacji, być może brakuje domyślnego użytkownika postgres. W takim przypadku możesz utworzyć domyślne postgres użytkownika za pomocą poniższego polecenia.
createuser -s -U $ USER
Zostaniesz poproszony o wpisanie wymaganej nazwy roli i hasła bazy danych Po zakończeniu procesu możesz zalogować się do konsoli postgres za pomocą poniższego polecenia
Np .: psql -U postgres
Tutaj, podczas tworzenia użytkownika, musisz podać hasło, jeśli je podałeś.
Mam nadzieję, że to pomoże :)
źródło
Byłem na OSX 10.8 i wszystko, czego próbowałem, dawało mi
FATAL: role "USER" does not exist
. Jak wiele osób tu mówi, uciekajcreateuser -s USER
, ale to dało mi ten sam błąd. To w końcu zadziałało:createuser -s --username=postgres
Tworzy superużytkownika (-s) Po podłączeniu jak PostgreSQL (--username = postgres'owy Flag).Widzę, że udzielono odpowiedzi na twoje pytanie, ale chcę dodać tę odpowiedź dla osób używających OSX próbujących zainstalować PostgreSQL 9.2.4.
źródło
sudo su postgres
.Spotkałem się z tym problemem od razu, kiedy po raz pierwszy instalowałem POSTGRES.app Heroku. Po jednej porannej próbie i błędzie myślę, że ten jeden wiersz kodu rozwiązał problem. Jak opisano wcześniej, dzieje się tak, ponieważ postgresql nie ma domyślnej roli podczas pierwszej konfiguracji. I musimy to ustawić.
Aby użyć tego polecenia psql, musisz zalogować się do odpowiedniej konsoli psql.
Zauważyłeś również, że jeśli utworzyłeś już rolę `` postgre '', ale nadal otrzymujesz błędy uprawnień, musisz zmienić za pomocą polecenia:
Mam nadzieję, że to pomoże!
źródło
W dokumentacji Heroku; Zaczynając z szynami 4, mówią:
Następnie po prostu usuwasz tę linię w "programowaniu:", jeśli nie pg mówi do bazy danych, która działa pod rolą "myapp"
Pamiętaj też o stworzeniu bazy danych do programowania:
Zastąp „myapp” nazwą swojej aplikacji
źródło
Czy możesz mieć wiele lokalnych baz danych? Sprawdź swoją
database.yml
i upewnij się, że trafiasz na pg db, który chcesz. Użyj,rails console
aby potwierdzić.źródło
Procedura instalacji tworzy konto użytkownika o nazwie,
postgres
które jest skojarzone z domyślną rolą Postgres. Aby korzystać z Postgres, możesz zalogować się na to konto. Ale jeśli nie zostanie to wyraźnie określone, aplikacja railsowa szuka innej roli, w szczególności roli posiadającej twoją nazwę użytkownika unix, która może nie zostać utworzona w rolach postgres.Aby temu zaradzić, możesz utworzyć nową rolę, najpierw przełączając się na domyślny postgres roli, który został utworzony podczas instalacji
sudo -i -u postgres
Po zalogowaniu się na konto postgres możesz stworzyć nowego użytkownika poleceniem:
createuser --interactive
Spowoduje to dokonanie pewnych wyborów i, na podstawie Twoich odpowiedzi, wykonanie odpowiednich poleceń Postgres, aby utworzyć użytkownika.
Pomiń nazwę roli i niektóre uprawnienia, a rola zostanie utworzona, a następnie możesz przeprowadzić migrację bazy danych
źródło
Moja odpowiedź była znacznie prostsza. Po prostu przeszedłem do folderu db i usunąłem kolumnę id, którą próbowałem na siłę utworzyć, ale która w rzeczywistości jest tworzona automagicznie. Usunąłem również NAZWĘ UŻYTKOWNIKA w pliku database.yml (w folderze konfiguracyjnym).
źródło
W wierszu poleceń lokalnego użytkownika Ubuntu, ale nie użytkownika root, wpisz
sudo -u postgres nazwa użytkownika createuser
nazwa użytkownika powyżej powinna być zgodna z nazwą podaną w komunikacie „KRYTYCZNY: rola 'nazwa użytkownika' nie istnieje”.
Wprowadź hasło dla nazwy użytkownika.
Następnie wprowadź ponownie komendę, która wygenerowała komunikat, że rola nie istnieje.
źródło
Skończyło się tutaj po próbie wykonania samouczka Ryana Bate'a na temat wdrażania na AWS EC2 z gumą. Oto, co mi się przydarzyło: utworzyliśmy nową aplikację przy użyciu „
rails new blog -d postgresql
Oczywiście powoduje to utworzenie nowej aplikacji z bazą danych pg, ale baza danych nie została jeszcze utworzona. Z sqlite, po prostu uruchamiasz rake db: migrate, jednak z pg musisz najpierw utworzyć bazę danych pg. Ryan nie zrobił tego kroku. Polecenie brzmi
rake db:create:all
, wtedy możemy biecrake db:migrate
Druga część to zmiana pliku database.yml. Domyślną nazwą użytkownika podczas generowania pliku jest „nazwa aplikacji”. Jednak są szanse, że twoja rola dla administratora postgresql jest inna (przynajmniej była dla mnie). Zmieniłem to na swoje imię (zobacz powyższe porady dotyczące tworzenia nazwy roli) i było dobrze.
Mam nadzieję że to pomoże.
źródło
Po kilku instalacjach i odinstalowywaniu Postgres, oto, co wydaje mi się, że teraz działa konsekwentnie z Os X Mavericks, Rails 4 i Ruby 2.
W pliku database.yml zmieniam domyślne nazwy użytkownika na nazwę użytkownika mojego komputera, która dla mnie to po prostu „admin”.
W wierszu poleceń uruchamiam rake db: create: all
Następnie uruchamiam rake db: migrate
Kiedy uruchamiam serwer railsowy i sprawdzam lokalnego hosta, pojawia się komunikat „Witamy na pokładzie”.
źródło
Możesz to obejść, uruchamiając
initdb -U postgres -D /path/to/data
lub uruchamiając go jako postgres użytkownika, ponieważ domyślnie jest to bieżący użytkownik. GL!źródło