gpt4 book ai didi

MYSQL CURRENT_TIMESTAMP 仅适用于更新

转载 作者:行者123 更新时间:2023-11-29 10:36:33 24 4
gpt4 key购买 nike

我有一个数据库,其中有一个名为日期(时间戳)的列,该列设置为默认的 CURRENT_TIMESTAMP。这曾经工作正常,但是将数据库迁移到不同的服务器后,时间戳仅在执行 UPDATE 查询后应用,INSERT 查询只是将其设置为“0000-00-00 00:00:00”。

最佳答案

我怀疑执行插入操作时会将空字符串放入该字段中。看看这个结果;

MariaDB [horizon]> create table foo (t timestamp default current_timestamp not null);
Query OK, 0 rows affected (0.02 sec)

MariaDB [horizon]> insert into foo values ('');
Query OK, 1 row affected, 1 warning (0.01 sec)

MariaDB [horizon]> select * from foo;
+---------------------+
| t |
+---------------------+
| 0000-00-00 00:00:00 |
+---------------------+
1 row in set (0.00 sec)

我会检查执行插入的代码 - 如果它来自网络表单,则表单本身可能会提交一个空字符串。您确实需要插入 null 或将该列保留在 INSERT 之外才能获得默认值。

MariaDB [horizon]> insert into foo values (null);
Query OK, 1 row affected (0.01 sec)

MariaDB [horizon]> insert into foo values ();
Query OK, 1 row affected (0.00 sec)

MariaDB [horizon]> select * from foo;
+---------------------+
| t |
+---------------------+
| 0000-00-00 00:00:00 |
| 2017-09-19 21:41:16 |
| 2017-09-19 21:41:20 |
+---------------------+
3 rows in set (0.00 sec)

关于MYSQL CURRENT_TIMESTAMP 仅适用于更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46307812/

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