2017-10-15 105 views
0

我正在mariadb/mysql引擎中运行以下查询。'createdAt'的默认值无效DATETIME DEFAULT NOW()

CREATE TABLE IF NOT EXISTS行情( ID INTEGER NOT NULL auto_increment ,报价TEXT,作者VARCHAR(255),流派VARCHAR(255),标签TEXT, createdAt DATETIME DEFAULT NOW(), updatedAt DATETIME 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

任何帮助表示赞赏。

+1

你正在运行什么版本。在DATETIME上允许“DEFAULT”是一项很少的新功能。 (对于'TIMESTAMP'很古老。) –

+0

@RickJames非常感谢你,这确实是由于旧的mariadb。我正在运行5.x.现在我已升级到10.X. – codebased

回答

1

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()没有被提及,但效果是一样的。