mysql - 'createdAt' DATETIME DEFAULT NOW() 的默认值无效

标签 mysql mariadb

我正在 mariadb/mysql 引擎中运行以下查询。

如果不存在则创建表引用(idINTEGER NOT NULL auto_increment ,引用TEXT,作者VARCHAR(255),流派VARCHAR(255),标签TEXT,createdAtDATETIME DEFAULT NOW(),updatedAtDATETIME DEFAULT NOW(), PRIMARY KEY (id)) ENGINE=InnoDB;

但是,我收到以下错误:

创建表时发生错误:

{Invalid default value for 'createdAt'}

这是sql模式的结果:

show variables like 'sql_mode' ; 

STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

感谢任何帮助。

最佳答案

来自https://mariadb.com/kb/en/library/datetime/ :

MariaDB starting with 10.0.1 Since MariaDB 10.0.1, DATETIME columns also accept CURRENT_TIMESTAMP as the default value.

注意,没有提到NOW(),但效果是一样的。

关于mysql - 'createdAt' DATETIME DEFAULT NOW() 的默认值无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46750963/

相关文章:

c# - 使用 C# 查询 MariaDB 数据库

mysql - 加速本地MySql对大表发起规范化查询

java - 如何从 hibernate 创建/调用 mysql 事件?

从数据库中选择并更新列的mysql触发器

php - SQL - 如何避免为并发连接选取同一行?

sql - 如何删除 SQL 首字母缩略词中的空格?

mysql - 如何在MySQL中累积(stock)查询(flow)的结果

带有动态 SQL 的 MySQL 查询死于错误 "Commands out of sync"

mysql - SQL 的精确结果

Mysql 查找具有最长字段值的行作为文本的开头