Jupitor$ bundle exec rake db:create db:migrate
APP_development already exists
rake aborted!
PG::Error: ERROR: invalid value for parameter "TimeZone": "UTC"
: SET time zone 'UTC'
Ciągle otrzymuję ten błąd podczas próby migracji do mojej bazy danych postgres. Pomoc będzie bardzo mile widziane!
ruby-on-rails-3
postgresql
Stephen Nguyen
źródło
źródło
SET time zone 'UTC'
działa w mojej instalacji PostgreSQL 9.1.4.SET time zone 'UTC'
działa dla ciebie w konsoli psql?Odpowiedzi:
Miałem ten sam problem podczas korzystania z Postgres.app z Heroku. Ponowne uruchomienie komputera Mac rozwiązało problem.
źródło
Ponowne uruchomienie postgresql działa.
Aby ponownie uruchomić, jeśli zainstalowałeś go za pomocą homebrew,
brew info postgresql
powie ci:launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
źródło
brew services restart postgresql
lub jeśli używasz określonej wersji, coś w stylubrew servces restart [email protected]
brew services restart postgresql
źródło
Spróbuj ponownie uruchomić serwer. Zaktualizowałem Postgresql przez Homebrew, ale zapomniałem zrestartować serwer i mam ten sam problem. Wydaje mi się, że jest to spowodowane niezgodnością wersji klienta i serwera. psql zaczął się od:
$ psql psql (9.1.4, server 9.1.2) Type "help" for help.
źródło
Myślę, że nie zasługuję na żadne punkty za to, ale ponowne uruchomienie mojej Postgres.app (co jest lepsze niż ponowne uruchomienie całego systemu) rozwiązało to za mnie. Aplikacja nie pojawia się w Docku, możesz ją znaleźć na pasku nawigacyjnym u góry okna. Mam nadzieję, że to i tak pomoże.
źródło
Opierając się na odpowiedzi @ MathiasJ , zamiast restartować całą moją maszynę, uruchomiłem
brew services restart postgresql@9.6
a mój kolejny
rake db:create
działał idealnie.źródło
Ja też miałem ten problem.
Zaloguj się do bazy danych, a następnie wydaj:
set time zone utc;
źródło
W rzeczywistości wydarzyło się to, że zaktualizowałeś serwer postgresql i wyczyściłeś stare foldery, ale nie zrestartowałeś serwera postgresql. Serwer szukał plików stref czasowych w usuniętym katalogu
źródło
Jeśli nic innego nie naprawia i akurat używasz
homebrew
, prawdopodobnie masz problemy z aktualnymi linkami.Zakładając, że masz
Postgres
zainstalowane dwie wersje, odłącz, a następnie połącz ponownie. W moim przypadku potrzebowałem, aby dwie wersje działały, aby działaćpg_upgrade
. Miałempostgresql95
ipostgresql
tak zrobiłem:$ brew unlink postgresql $ brew unlink postgresql95 $ brew link postgresql95 $ brew link --overwrite postgresql
To sprawiło, że oboje pracowałem w tym samym czasie. Mam nadzieję, że okaże się to pomocne, ponieważ zajęło mi dużo czasu, zanim to rozgryzłem!
źródło
W moim przypadku ponowne uruchomienie bazy danych nie pomogło. Aktualizacja tzdata (
apt-get install tzdata
) załatwiła mi sprawę .źródło
pomogło samo ponowne uruchomienie bazy danych. Homebrew zaktualizował moją instalację Postgres i jeszcze nie uruchomiłem ponownie.
źródło
Podobny problem miałem po zaktualizowaniu informacji o strefie czasowej, czyli pobraniu bazy danych IANA i skompilowaniu za pomocą zic.
Mój problem zaczął się po ponownym uruchomieniu PostgreSQL. Otrzymałem
invalid value for parameter TimeZone: UTC
i ponowne uruchomienie nie zrobiło nic, aby rozwiązać problem.Okazuje się, że po aktualizacji informacje o mojej strefie czasowej zostały całkowicie pomieszane. Miałem zwisające dowiązania symboliczne
/usr/share/zoneinfo
. Z konsoli psql otrzymałem:mydb=# SELECT * FROM pg_timezone_names; ERROR: could not stat "/usr/share/zoneinfo/PRC": No such file or directory
Usunąłem wszystkie takie wiszące linki symboliczne. Po wykonaniu tej czynności przynajmniej mogłem zabrać się
SELECT * FROM pg_timezone_names
do pracy, ale nadal mam to samoinvalid value...
błąd.Ostatnim rozwiązaniem dla mnie było utworzenie nowego linku symbolicznego:
cd /usr/share/zoneinfo ln -s Etc/UTC UTC
Po tym
SET time zone 'UTC'
działało poprawnie.źródło
Krótka informacja dla tych, którzy nie używają Postgres.app, ale uruchamiają psql z wiersza poleceń lub przez launchctl. Będziesz musiał dostosować następujące ustawienia dla miejsca, w którym masz swoje dane Postgres i pliki dziennika znajdujące się pod adresem:
pg_ctl stop pg_ctl start -D /usr/local/pgsql/data/ -l /usr/local/pgsql/log/server.log
źródło
brew services restart postgresql
nie naprawił dla mnie. Jestem pewien, że ponowne uruchomienie by zadziałało, ale chciałem znaleźć przyczynę problemu.Wydaje mi się, że przyczyną problemu były dwie sprzeczne wersje
postgresql
.Miałem już
postgresql
uruchomione z usługami parzenia, a następnie zainstalowałem,postgresql@11
które pozostałypostgresql
działające w usługach parzenia nawet po odinstalowaniupostgresql
.Naprawiłem to, zatrzymując
postgresql
usługę parzenia, mimo że nie była wymieniona wbrew services list
.Kroki ku reprodukcji:
Jak naprawić:
Otwarto problem z Homebrew żądający automatycznego zatrzymania usługi formuły po odinstalowaniu.
źródło
[email protected]
uruchomiony, a następnie zainstalowany[email protected]
. Mimo że odinstalowałem 9.5, nadal działało. Ponowne uruchomienie 9.6 nie rozwiązało problemu. Właściwa poprawka polegała na zatrzymaniu 9.5, a następnie ponownym uruchomieniu 9.6, a potem to zadziałało.Najwyraźniej podobnie dzieje się z Javą / JDBC podczas łączenia się z Postgresem.
Rozwiązaniem jest poinformowanie JDBC, aby podczas uzyskiwania połączenia zgłaszało do Postgres poprawną strefę czasową użytkownika.
Tak więc wyraźnie wspomnij o strefie czasowej użytkownika podczas uruchamiania programu:
Uwaga:
Dodanie tego tutaj, ponieważ jest to pierwszy wynik w Google dotyczący tego problemu z połączeniem z Postgres!
Źródło:
Ten komentarz Yuriya na forum pomocy technicznej Jira: https://community.atlassian.com/t5/Jira-questions/invalid-value-for-parameter-quot-TimeZone-quot-quot-US-Pacific/qaq-p/ 839426
źródło