Mybatisによって挿入された記録時間は、データベースに保存した後の時間と一致していません
問題:
Mybatisによって挿入された記録時間は、データベースに保存した後の時間と一致していません。
2016-12-27 12:15:24 in Java
データベースに保存した後は、2016-12-2622:15:24です。
分析:
2つの時間の差は14時間であり、これは明らかにタイムゾーンの問題です。
mysqlの現在の時刻、現在のタイムゾーンを表示します。
> select curtime();#またはselect now()は
+ ----------- +
| curtime()|
+ ----------- +
| 15:18: 10 |
+ ----------- +
> "%time_zone%"のような変数を表示します;
+ ------------------ + ----- --- +
| Variable_name |値|
+ ------------------ + -------- +
| system_time_zone | CST |
| time_zone | SYSTEM |
+- ----------------- + -------- +
2行セット(0.00秒)
#time_zoneは、mysqlがシステムタイムゾーンを使用することを示し、system_time_zoneはそのシステムを示しますCSTタイムゾーンを使用
解決:
方法1:mysqlコマンドラインモードを使用して動的に変更する
> set global time_zone = '+ 8:00'; ## mysqlグローバルタイムゾーンを北京時間、つまり、私たちがいる東8地区に 変更します> set time_zone = '+ 8:00'; ##変更します現在のセッションタイムゾーン >フラッシュ特権;#すぐに有効
方法2:my.cnf構成ファイルを変更してタイムゾーンを変更する
#vim /etc/my.cnf ## default-time_zone = '+ 8:00'を[mysqld]領域に追加#/ etc / init.d / mysqld restart ## mysqlを再起動して、新しいタイムゾーンを有効にします
方法3:jdbcUrlを設定し、serverTimezone = UTCパラメーターを追加します
jdbcUrl = jdbc \:mysql \:// localhost \:3306 / wos_refer?useUnicode \ = true&characterEncoding \ = UTF-8&serverTimezone = UTC