我在InnoDB MySQL数据库中有一个简单的表:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
我想使用union进行查询并将结果存储在临时表中。我把它简化为以下内容:
CREATE TEMPORARY TABLE IF NOT EXISTS result AS
SELECT * FROM test
UNION
SELECT * FROM test
我添加如下数据:
INSERT INTO test (`date`) VALUES ('2017-09-01');
MySQL的回复是
Error Code: 1067. Invalid default value for 'date'
date date NOT NULL DEFAULT '2017-09-06'
)。UNION
和第二个SELECT就可以了。UNION ALL
也可以(但这不是我需要的)。根据我的阅读,1067与安装问题有关,这在这种情况下很奇怪。
为了让这项工作有效,我该怎么做?
答案 0 :(得分:2)
这似乎是MySQL中的一个错误。该查询在5.6.25和5.7.12版本中有效,但在5.7.17和5.7.19版本中没有。所以我认为这必须是最近引入的错误。 (在此报道:https://bugs.mysql.com/bug.php?id=87711)感谢Thorsten提示。
编辑:
在我的系统上全部5.7。版本有问题(是的,我尝试了所有;))。我无法回到5.6。所以我切换到MariaDB,我只能推荐!