gpt4 book ai didi

Mysql datetime DEFAULT CURRENT_TIMESTAMP错误

转载 作者:IT老高 更新时间:2023-10-29 00:13:37 28 4
gpt4 key购买 nike

1.当我在 Windows 上运行此 MYSQL 语法时,它运行正常:

CREATE TABLE New
(
id bigint NOT NULL AUTO_INCREMENT,
timeUp datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
)

但是当我尝试在 Linux 上运行这段代码时出现错误:

 #1067 - Invalid default value for 'time'

2.在 Windows 上,大小写不敏感,例如。 Newnew 都被认为是相同的。但在 Linux 上,大小写很敏感。

Linux 的配​​置:

MySQL 5.5.33,phpMyAdmin:4.0.5,PHP:5.2.17

Windows 的配置:

MySql:5.6.11,phpMyAdmin:4.0.4.1,PHP:5.5.0

有没有办法让它们在两个系统中通用?或者任何替代方法?

最佳答案

在 MySQL 5.6 中添加了对 DATETIME(数据类型)的 DEFAULT CURRENT_TIMESTAMP 支持。

在 5.5 及更早的版本中,这仅适用于 TIMESTAMP(数据类型)列。

可以在 5.5 中使用 BEFORE INSERT 触发器为列分配默认值。

 DELIMITER $$

CREATE TRIGGER ...
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
IF NEW.mycol IS NULL THEN
SET NEW.mycol = NOW();
END IF;
END$$

<罢工>区分大小写(对存储在列中的值的查询)是由于列使用了 collat​​ion。以 _ci 结尾的排序规则不区分大小写。例如 latin1_swedish_ci 不区分大小写,但 latin1_general_cs 区分大小写。

<罢工>

SHOW CREATE TABLE foo 的输出将显示字符类型列的字符集和排序规则。这是在每列级别指定的。当新列定义未指定字符集时,在表级别指定的“默认”适用于添加到表中的新列。

更新

Kaii 指出,我关于“区分大小写”的回答涉及存储在列中的值,查询是否会从包含 "New" 值的列中返回值,将返回谓词如 "t.col = 'new'".

请参阅 Kaii 关于 标识符(例如表名)在 Windows 上的处理方式(默认情况下)与在 Linux 上不同的回答。

关于Mysql datetime DEFAULT CURRENT_TIMESTAMP错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23153822/

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