Postgresql

在 Postgresql 中,我如何獲取本地時間作為在 FreeBSD 上工作的時區?

  • June 2, 2022

PostgreSQL: 9.4

FreeBSD: 11.2

當我將TimeZone參數設置為 時,在postgresql.conf嘗試localtime啟動 PostgreSQL 時收到以下錯誤。

service postgresql restart
<2022-06-02 11:18:27.612 EDT> LOG:  invalid value for parameter "TimeZone": "localtime"
<2022-06-02 11:18:27.613 EDT> FATAL:  configuration file "/usr/local/pgsql/data/postgresql.conf" contains errors
pg_ctl: could not start server
Examine the log output.

在我的搜尋過程中,我發現似乎表明 /etc/localtime 應該是一個符號連結。我的不是,所以我嘗試將其更改為符號連結,但它仍然無法正常工作,因為我遇到了與上述相同的錯誤。

mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/America/Yellowknife
shutdown -r now
ls -la /etc/localtime
lrwxr-xr-x  1 root  wheel  35 Jun  2 11:04 /etc/localtime -> /usr/share/zoneinfo/America/Yellowknife

是否可以TimeZone開始localtime工作FreeBSD

請注意,我還發現了這個討論,其中提到了創建一個symlinkto /etc/localtimein /usr/share/zoneinfo。我也試過了,它沒有工作,因為我仍然得到與上面相同的錯誤。

使用pg_config --configure我看到它沒有配置--with-system-tzdata. 這是使用的要求localtime嗎?

您配置 PostgreSQL 的方式,它不使用作業系統的時區數據庫,而是它自己的副本,位於pg_config --sharedir. 所以你的符號連結沒有效果。

您必須在 PostgreSQL 的時區數據庫副本中創建該符號連結,但正確的解決方案不同:設置timezoneAmerica/Yellowknife.

不要使用不受支持的 PostgreSQL 版本。

引用自:https://dba.stackexchange.com/questions/312867