【发布时间】:2018-01-05 07:08:59
【问题描述】:
我得到了错误
ERROR 1067 (42000) at line 5459: Invalid default value for 'start_time'
运行以下查询时
DROP TABLE IF EXISTS `slow_log`;
CREATE TABLE IF NOT EXISTS `slow_log` (
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`user_host` mediumtext NOT NULL,
`query_time` time(6) NOT NULL,
`lock_time` time(6) NOT NULL,
`rows_sent` int(11) NOT NULL,
`rows_examined` int(11) NOT NULL,
`db` varchar(512) NOT NULL,
`last_insert_id` int(11) NOT NULL,
`insert_id` int(11) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`sql_text` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log';
我使用的是 MySQL 5.7.18
$ mysql --version
mysql Ver 14.14 Distrib 5.7.18, for osx10.10 (x86_64) using EditLine wrapper
根据MySQL 5.7 documentation,下面的语法是
CREATE TABLE t1 (
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
上面的 SQL 语法有什么问题?
【问题讨论】:
-
不确定是否是问题所在,但您是否需要在 DEFAULT 中使用 NOT NULL?也尝试删除 (6)。
-
我同意,NOT NULL 可能是问题所在,因为在插入过程中,该字段最初为 null,以便在插入 current_timestamp 后更改。
-
怎么会得到像 int(10) 之类的东西!?!
标签: mysql sql create-table mysql-5.7 mysql-error-1067