2016-12-11 12 views
0

MariaDB 5.5以前でのみCURRENT_TIMESTAMPがデフォルト値として定義されていた テーブルごとに1つのタイムスタンプ列があるかもしれません。この の制限は、MariaDB 10.0以降では適用されなくなりました。MariaDBバグは

出典:https://mariadb.com/kb/en/mariadb/timestamp/

私は、次の表している:私は

CREATE TABLE oauth_client_details (
    client_id VARCHAR(255) PRIMARY KEY, 
    resource_ids VARCHAR(255), 
    client_secret VARCHAR(255), 
    scope VARCHAR(255), 
    authorized_grant_types VARCHAR(255), 
    web_server_redirect_uri VARCHAR(255), 
    authorities VARCHAR(255), 
    access_token_validity INTEGER, 
    refresh_token_validity INTEGER, 
    additional_information VARCHAR(4096), 
    autoapprove VARCHAR(255), 
    version bigint(20) UNSIGNED DEFAULT '1', 
    creation_datetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    modification_datetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    active tinyint(1) UNSIGNED DEFAULT '1' 
); 

を必要とする:

  1. 作成日時を挿入
  2. に現在のタイムスタンプでいっぱいに
  3. 更新時に現在のタイムスタンプで更新される更新日時。

私は、インサートを行なったし、ここで私が得た値です。

  • creation_datetime: '2016年12月11日午後08時03分24秒'
  • modification_datetime:「2016年12月11日は、 13:03:24 '

私はこれらの値が同じであると予想していました。

私はUTC時間のみを保存し、最後にユーザロケール に翻訳したいと思います。

  • My SpringサーバーはUTC時刻を使用します。
  • MariaDB:

    SELECT @@global.time_zone, @@global.system_time_zone; 
    |SYSTEM|UTC 
    

それは今私の国では20:03ですので、私は間違った値がmodification_datetimeフィールドであると仮定します。

私はmariadb:10.1.17オフィシャルドッカー画像を画像に変更することなく使用します。

これは私の挿入文です:

==> Preparing: insert into oauth_client_details(client_id,authorized_grant_types,access_token_validity,additional_information,active,client_secret,creation_datetime,autoapprove,modification_datetime,resource_ids,web_server_redirect_uri,authorities,refresh_token_validity,scope,version) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) 
==> Parameters: bo(String), authorization_code,refresh_token(String), 1800(Integer), {"companyId":1,"companyName":"testing"}(String), true(Boolean), $2a$10$h/0tc3qnZj/ZfRrNXf.oiuypEyYXJAJZdHPgy2ZMc1XMAntAMPK(String), null, true(Boolean), null, testinggroup/api(String), http://localhost:8080,http://dev:31735(String), ROLE_CLIENT(String), 3600(Integer), read,write,trust(String), 1(Long) 

は、誰もが今までにこれを持っていますか?

編集:ドッカーのMariadbをバージョン10.1.17から10.1.19に最新の日付に更新しましたが、私はまだ同じバグがあります。

+0

日付が異なる場合は、コードを残したので表示されます。creationDateTime = new DateTime();これは、サーバーのDateTimeはローカルタイムゾーンを使用し、SQLは別のものを使用することを意味します – BigDong

答えて

0

モデルにcreationDateTime = new DateTime();というコードが残っているため、日付が異なるようです。

サーバーがcreationDateTimeとデータベースUTCにDateTime()を使用していたことを意味します。