gpt4 book ai didi

mysql - MariaDB 的 TIMESTAMP、CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 错误

转载 作者:行者123 更新时间:2023-11-29 19:44:54 35 4
gpt4 key购买 nike

In MariaDB 5.5 and before there could only be one TIMESTAMP column per table that had CURRENT_TIMESTAMP defined as its default value. This limit has no longer applied since MariaDB 10.0.

来源: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. 要使用更新时的当前时间戳更新的修改日期时间。

我做了一个插入,这是我得到的值:

  • 创建日期时间:'2016-12-11 20:03:24'
  • modification_datetime : '2016-12-11 13:03:24'

我原本期望这些值是相同的,为什么现在不同了?

我只想存储 UTC 时间并将其转换为用户区域设置在最后一刻。

  • 我的 Spring 服务器使用 UTC 时间。
  • 玛丽亚数据库:

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

现在我所在国家/地区的时间为 20:03,因此我认为 modification_datetime 字段的值错误。

我使用mariadb:10.1.17官方docker镜像,没有对镜像进行任何修改。

这是我的插入语句:

==>  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)

有人遇到过这种情况吗?

编辑:我已将我的 docker Mariadb 从版本 10.1.17 更新到最新的 10.1.19 版本,但仍然存在相同的错误。

最佳答案

日期似乎不同,因为我在模型中留下了代码 creationDateTime = new DateTime();

这意味着服务器正在使用 DateTime() 来创建日期时间和数据库 UTC。

关于mysql - MariaDB 的 TIMESTAMP、CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41086587/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com