Mysql – 尝试更新时间戳列时.它无法更新
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql – 尝试更新时间戳列时.它无法更新,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1711字,纯文字阅读大概需要3分钟。
内容图文
![Mysql – 尝试更新时间戳列时.它无法更新](/upload/InfoBanner/zyjiaocheng/910/411908dcdf32490cbaf089a8a3ffa293.jpg)
我想我可能在mysql中遇到过一个bug,或者只是我做错了.
过去四个月我一直在使用相同的特定查询,就在今天它以某种方式停止工作.我看不出问题.
我正在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()相同.
请注意,如果您没有明确说明CREATE TABLE脚本中有关TIMESTAMP列的任何内容,那么它们中的第一个默认情况下会获得此行为/属性.阅读有关此Automatic Initialization and Updating for TIMESTAMP的MySQL文档,其中指出:
- With neither
DEFAULT CURRENT_TIMESTAMP
norON UPDATE CURRENT_TIMESTAMP
, it is the same as specifying bothDEFAULT CURRENT_TIMESTAMP
andON 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 – 尝试更新时间戳列时.它无法更新全部内容,希望文章能够帮你解决Mysql – 尝试更新时间戳列时.它无法更新所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。