web-dev-qa-db-ja.com

サーバーのタイムゾーン値「CEST」が認識されません

私は休止状態(Hibernate Maven 5.2.15.Final、Mysql-connector Maven 8.0.9-rc)を使用していますが、mysql 5.7はlinuxのlampp環境で使用しています。

私はイタリア(中央ヨーロッパ夏時間)にいて、3月25日になると、接続dbでエラーが発生します:

サーバーのタイムゾーン値 'CEST'が認識されないか、複数のタイムゾーンを表します。タイムゾーンサポートを利用する場合は、サーバーまたはJDBCドライバーを(serverTimezone構成プロパティを介して)構成して、より具体的なタイムゾーン値を使用する必要があります。

Mysqlコンソールで、次を実行しました。

SHOW GLOBAL VARIABLES LIKE 'time_zone';
SET GLOBAL time_zone='Europe/Rome'; 

しかし、それは持続しませんでした。

次に、my.cnfファイル(/ etc/mysql内)に追加しました。

[mysqld] 
default-time-zone = 'Europe/Rome' 

また:

default_time_zone = 'Europe/Rome' 

しかし、dbサーバーはまだ起動しませんでした...

なぜエラーが発生するのですか?誰か助けてくれますか?

ありがとうございました!

13
Filippodb

あなたの場合、有効なサーバーのタイムゾーンはnot UTCであるため、@ aimanの答えは正しくありません。

Jdbc接続文字列の追加パラメーターを含むいくつかのソリューションをネット上で見つけることができますが、この文字列を変更できない場合があります。

修正方法は次のとおりです。

最初にmysqlにシステムタイムゾーンをインポートします。

$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

次に、デフォルトのmysqlサーバーのタイムゾーンを[mysqld](または最近のDebian/Ubuntuディストリビューションの/etc/mysql/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnfセクションで実際のサーバーのタイムゾーンに設定します。たとえば:

default_time_zone = Europe/Paris

mysqlを再起動することを忘れないでください

$ Sudo service mysql restart

(またはディストリビューションに応じて適切なコマンド)。

15
Claude Brisson

まず、mysqlサーバーのタイムゾーンを確認します。
mysql -e "SELECT @@global.time_zone;" -u <mysqluser> -p
ほとんどの場合、SYSTEMである必要があります。
システムのタイムゾーンを見つける:date +”%Z
CESTかどうかを確認します。
システムのタイムゾーンを変更する必要があります。

#cd /usr/share/zoneinfo
#ls -l
#rm /etc/localtime
#ln -s /usr/share/zoneinfo/UTC /etc/localtime

次に、mysqlサーバーを再起動します:/etc/init.d/mysqld restart

楽しい

6
aiman