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データベースに移行しようとすると、このエラーが発生し続けます。助けていただければ幸いです!
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データベースに移行しようとすると、このエラーが発生し続けます。助けていただければ幸いです!
SET time zone 'UTC'
ためにpsqlコンソールで動作しますか?
回答:
HerokuのPostgres.appを使用して同じ問題が発生しました。Macを再起動すると解決しました。
postgresqlの再起動は機能します。
homebrewを使用してインストールした場合に再起動するには、次のbrew info postgresql
ように指示します。
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
brew services restart postgresql
、特定のバージョンを使用するか、次のようなものを使用すると、さらに簡単に再起動できますbrew servces restart postgresql@9.6
私はその点に値するものではないと思いますが、Postgres.appを再起動すると(システム全体を再起動するよりも優れています)、問題が解決しました。アプリはDockに表示されません。ウィンドウ上部のナビゲーションバーにあります。とにかくそれが役に立てば幸い。
@MathiasJの回答に基づくて、マシン全体を再起動する代わりに、
brew services restart postgresql@9.6
そしてその後の私のrake db:create
仕事は完璧に働きました。
私もこの問題を抱えていました。
データベースにログインして、以下を発行します。
set time zone utc;
他に何も修正せず、使用している場合 homebrew
いる場合は、現在のリンクに問題がある可能性があります。
2つのPostgres
バージョンがインストールされていると想定して、リンクを解除してから再度リンクしてください。私の場合、を実行するには2つのバージョンが必要でしたpg_upgrade
。私は持っpostgresql95
ているpostgresql
ので、私はそうしました:
$ brew unlink postgresql
$ brew unlink postgresql95
$ brew link postgresql95
$ brew link --overwrite postgresql
それは私を同時に働かせました。それを理解するのにしばらく時間がかかったので、それが役立つことを願っています!
タイムゾーン情報を更新した後、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'
正しく動作しました。
Postgres.appを使用していないが、コマンドラインまたはlaunchctlを介してpsqlを起動する人のためのクイックリファレンスです。Postgresのデータファイルとログファイルを配置する場所に応じて、以下を調整する必要があります。
pg_ctl stop
pg_ctl start -D /usr/local/pgsql/data/ -l /usr/local/pgsql/log/server.log
brew services restart postgresql
私のために修正しませんでした。再起動しても問題はないはずですが、問題の原因を突き止めたいと考えていました。
この問題は、の2つのバージョンが競合しているために発生したと思いますpostgresql
。
私はすでにpostgresql
brewサービスで実行していて、アンインストールした後もbrewサービスで実行しpostgresql@11
たままpostgresql
インストールしましたpostgresql
た。
にpostgresql
リストされていませんでしたが、brewサービスを停止してこれを修正しました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を再起動することでしたが、これは機能しました。
どうやら、Postgresへの接続中にJava / JDBCでも同様のことが起こります。
そこでの解決策は、接続の取得中にJDBCに正しいユーザーのタイムゾーンをPostgresに報告するように指示することです。
したがって、プログラムの起動時にユーザーのタイムゾーンを明示的に言及すると、次のことが可能になります。
java -Duser.timezone=America/Los_Angeles com.example.MyMainClass
注意:
これは、Postgresへの接続に関するこの問題のGoogleでの最初の結果であるため、ここに追加します。
ソース:
JuriサポートフォーラムでのYuriyによるこのコメント:https : //community.atlassian.com/t5/Jira-questions/invalid-value-for-parameter-quot-TimeZone-quot-quot-US-Pacific/qaq-p/ 839426
SET time zone 'UTC'
は、PostgreSQL 9.1.4インストールで機能します。