gpt4 book ai didi

Mysql - 尝试更新时间戳列时。更新失败

转载 作者:可可西里 更新时间:2023-11-01 07:28:36 25 4
gpt4 key购买 nike

我想我可能在 mysql 中遇到了错误,或者只是我做错了。

在过去的四个月里,我一直在使用相同的特定查询,但就在今天,它以某种方式停止工作。我看不出问题所在。

我正在 mysql 控制台中执行这些查询,它工作得很好,并且该字段正在更新。但是当 PHP 执行这些查询时,它会失败。

将记录插入表(具有两个时间戳字段)后,我正在尝试更新特定的时间戳列。

但不幸的是,它未能更新该列。

查询顺利(没有错误),但时间戳列中的值仍然保持不变。这很奇怪,因为当我将初始列值保留为 NULL 时,更新查询成功。

列:

START_DATETIME, END_DATETIME - are "timestamp" type.

插入:

INSERT INTO TABLE1(START_DATETIME, END_DATETIME, RESPONSE) 
VALUES(NOW(), NOW(), 'STARTED')

插入成功。 id 是 123

更新查询与任何其他查询一样正常:

UPDATE TABLE1 
SET END_DATETIME = NOW(), RESPONSE='ENDED'
WHERE ID = 123

更新失败,END_DATETIME 没有得到 NOW() 值。

可以用这个复制:

CREATE TABLE TABLE1 
(
id int auto_increment,
start_datetime timestamp,
end_datetime timestamp,
response varchar(100),

primary key(id)
);

最佳答案

您可能已经将第一个时间戳列(START_DATETIME)定义为自动插入并使用CURRENT_TIMESTAMP 自动更新。值(与 NOW() 相同。

请注意,如果您没有明确说明 TIMESTAMP 的任何内容CREATE TABLE 中的列脚本,其中的第一个默认获得此行为/属性。阅读关于此的 MySQL 文档 Automatic Initialization and Updating for TIMESTAMP ,其中指出:

  • With neither DEFAULT CURRENT_TIMESTAMP nor ON UPDATE CURRENT_TIMESTAMP, it is the same as specifying both DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP.

所以,如果你做 SHOW CREATE TABLE tableName ,你会得到这样的东西:

CREATE TABLE table1
( ...
, START_DATETIME TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP
, ...
) ;

如果您不希望出现这种情况,您应该将列定义更改为不自动更新:

ALTER TABLE table1
MODIFY COLUMN
START_DATETIME TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP ;

关于Mysql - 尝试更新时间戳列时。更新失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290115/

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