我收到错误
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语法有什么问题?
答案 0 :(得分:4)
有趣的是,这两项工作都是:
`start_time` timestamp(6),
和
`start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
您可以使用后者 - 将精度说明符保留在定义之外。
但正确的方法是:
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
中所述
如果
TIMESTAMP
或DATETIME
列定义包含显式内容 小数秒精度值在任何地方,必须是相同的值 在整个列定义中使用。这是允许的:CREATE TABLE t1 ( ts TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) );
这是不允许的:
CREATE TABLE t1 ( ts TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(3) );
答案 1 :(得分:1)
尝试:
function waitForElement(element, maxWaitTime, failOnError) {
maxWaitTime = maxWaitTime || 10000;
failOnError = failOnError || false;
return browser.wait(ExpectedConditions.visibilityOf(element), maxWaitTime)
.then((found) => Promise.resolve(found))
.catch((waitError) => {
if (failOnError) {
return Promise.reject(`waitForElement: ${waitError} for expected condition ${expectation} for the element: ${element}`);
} else {
return Promise.resolve(false);
}
});
}