Помилка postgres “недійсне значення параметра” TimeZone “:” UTC “”


89
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'

Я постійно отримую цю помилку під час спроби переходу до моєї бази даних postgres. допомога була б дуже вдячна!


2
Команда SET time zone 'UTC'працює в моїй установці PostgreSQL 9.1.4.
Ервін Брандштеттер

1
Яку версію PostgreSQL ви використовуєте? Чи SET time zone 'UTC'працює у вас консоль psql?
Mark Stosberg

Я використовую 9.1.4, де / як мені ввести часовий пояс SET 'UTC'?
Stephen Nguyen

1
Jupitor = # SET часовий пояс 'UTC'; ПОМИЛКА: недійсне значення для параметра "TimeZone": "UTC"
Стівен Нгуєн,

1
Postgres (v.9.2.4) не любить UTC, замість цього використовуйте 'GMT'.
PhoebeB

Відповіді:


135

У мене була та ж проблема з використанням Postgres.app від Heroku. Перезавантаження мого Mac це вирішило.


2
Дійсно дивно, спробував перезапустити програму та встановити часовий пояс. І те, і інше не працювало, потім перезавантажило mac і boom, жодних проблем.
Стів

4
У мене виникла ця проблема після перевстановлення postgress через brew. Допоміг перезапуск mac.
maicher

1
перезапуск postgresql після оновлення виправляє проблему "pg_ctl restart"
Єжик

4
перезапуск postgres працював і для мене. Моєю помилкою було ПОМИЛКА: недійсне значення параметра "TimeZone": "Америка / Чикаго". Просто подумав, що додаю цей коментар, оскільки я даремно витратив час на пошук цього повідомлення про помилку, не розуміючи, що це трапляється і для UTC
Колін Д,

1
Я чесно не можу повірити, але це насправді спрацювало.
Райан Сандрідж,

77

Перезапуск postgresql працює.

Щоб перезапустити, якщо ви встановили його за допомогою homebrew, brew info postgresqlскажете:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

8
Правильно, це трапляється, оскільки PostgreSQL було оновлено, але не перезапущено.
Фред

Дякую, я був би здивований, якби перезавантаження справді було єдиною відповіддю.
sirdharma

6
для заварювання ви можете перезапустити ще простіше за допомогою, brew services restart postgresqlабо якщо ви використовуєте конкретну версію, щось на зразокbrew servces restart postgresql@9.6
JiuJitsuCoder

Якби я міг знову проголосувати за це, я б. Просто вдруге натрапив на цю помилку, зайнявся пошуком і виявив, що це посилання фіолетове. Перезапуск postgres знову вирішив це для мене.
Кінгдон,


15

Спробуйте перезапустити сервер. Я оновив Postgresql через Homebrew, але забув перезапустити сервер і отримав ту саму проблему. Я вважаю, що це пов’язано з невідповідністю версій клієнта та сервера. psql починався з:

$ psql
psql (9.1.4, server 9.1.2)
Type "help" for help.

8

Я не думаю, що я заслуговую на це жодних балів, але перезавантаження мого Postgres.app (що краще, ніж перезавантаження всієї системи) це вирішило для мене. Додаток не відображається на Dock, ви можете знайти його на панелі навігації у верхній частині вікна. Сподіваюся, це все одно допоможе.


8

На основі відповіді @ MathiasJ замість перезавантаження всієї моєї машини я побіг

brew services restart postgresql@9.6

і моя подальша rake db:createпрацювала чудово.


1
Ця порада врятувала мене від перезавантаження. Дякую!
Тім Стюарт

4

У мене теж була ця проблема.

Увійдіть до бази даних і видайте:

set time zone utc;

23
Не працював у мене. ПОМИЛКА: недійсне значення для параметра "TimeZone": "utc"
Flavio Wuensche

4

Насправді сталося те, що ви оновили сервер postgresql і очистили старі папки, але не перезапустили сервер postgresql. Сервер шукав файли часових поясів у видаленій директорії


4

Якщо нічого іншого не виправлено, і ви homebrewвипадково використовуєте , швидше за все, у вас є проблеми з поточними посиланнями.

Припускаючи, що у вас встановлено дві Postgresверсії, переконайтеся, що ви від’єднали, а потім знову зробили посилання. У моєму випадку мені потрібні були дві версії для запуску pg_upgrade. У мене є postgresql95і postgresqlтак я зробив:

$ brew unlink postgresql
$ brew unlink postgresql95
$ brew link postgresql95
$ brew link --overwrite postgresql 

Це змусило мене обох працювати одночасно. Сподіваюся, це стане корисним, оскільки мені знадобилося багато часу, щоб це зрозуміти!


3

У моєму випадку перезапуск бази даних не допоміг. Оновлення tzdata ( apt-get install tzdata) зробило для мене фокус.


2

допомогло просто перезапуск бази даних. Homebrew оновив мою інсталяцію Postgres, і я ще не перезапустився.


2

У мене була подібна проблема після оновлення інформації про часовий пояс, тобто завантаження бази даних IANA та компіляції за допомогою zic.

Моя проблема насправді почалася після перезапуску PostgreSQL. Я отримав invalid value for parameter TimeZone: UTCі перезапуск знову не зробив нічого для вирішення проблеми.

Виявляється, інформація про мій часовий пояс була повністю переплутана після оновлення. У мене були звисаючі символічні посилання /usr/share/zoneinfo. З консолі psql я отримав:

mydb=# SELECT * FROM pg_timezone_names;
ERROR:  could not stat "/usr/share/zoneinfo/PRC": No such file or directory

Я видалив усі такі звисаючі символічні посилання. Після цього я, принаймні, міг SELECT * FROM pg_timezone_namesприступити до роботи, але все одно отримав ту саму invalid value...помилку.

Що нарешті вирішило проблему для мене, це створення нового символічного посилання:

cd /usr/share/zoneinfo
ln -s Etc/UTC UTC

Після цього SET time zone 'UTC'працював коректно.


1

Просто короткий довідник для тих, хто не використовує Postgres.app, але запускає psql із командного рядка або через launchctl. Вам потрібно буде налаштувати наступне для того, де у вас є дані Postgres і файли журналів, розташовані за адресою:

pg_ctl stop
pg_ctl start -D /usr/local/pgsql/data/ -l /usr/local/pgsql/log/server.log

Я зробив саме це. Я звик запускати / зупиняти postgres з терміналу на Mac, і це спрацювало чудово
sebasjimenez10,

1

brew services restart postgresqlне виправив для мене. Я впевнений, що перезавантаження могло б спрацювати, але я хотів з’ясувати причину проблеми.


Я вважаю, проблема виникла у мене через дві суперечливі версії postgresql.

Я вже postgresqlпрацював із службами заварювання, а потім встановлював, postgresql@11що залишало postgresqlзапуск у службах заварювання навіть після того, як я видалив postgresql.

Я виправив це, зупинивши postgresqlслужбу заварювання, хоча це не було в списку brew services list.


Етапи відтворення:

$ brew install postgresql
$ brew services start postgresql

$ brew install postgresql@11
$ brew uninstall postgresql

$ brew services start postgresql@11

Як виправити:

$ brew services stop postgresql

Відкрито випуск Homebrew із проханням про автоматичне припинення служби формули після видалення.


Моя проблема полягала в тому, що я postgresql@9.5працював, а потім встановив postgresql@9.6. Незважаючи на те, що я видалив 9.5, він все ще працював. Перезапуск 9.6 не виправив. Фактичне виправлення мало зупинити 9.5, а потім перезапустити 9.6, і це спрацювало.
Саймон Кіссан

Видалення всього postgresql може зробити це ще гіршим.
theKid

0

Очевидно, подібне відбувається і з Java / JDBC під час підключення до Postgres.

Рішення полягає в тому, щоб сказати JDBC повідомляти Postgres про правильний часовий пояс користувача під час отримання з’єднання.

Отже, явно згадайте часовий пояс користувача під час запуску програми допомагає:

java -Duser.timezone=America/Los_Angeles com.example.MyMainClass

Примітка:

Додавши це сюди, оскільки це, здається, є першим результатом у Google щодо цієї проблеми із підключенням до Postgres!

Джерело:

Цей коментар Юрія на форумі підтримки Jira: https://community.atlassian.com/t5/Jira-questions/invalid-value-for-parameter-quot-TimeZone-quot-quot-US-Pacific/qaq-p/ 839426

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.