MySQL CREATE TABLE FROM UNION给出“无效的默认值”

时间:2017-09-08 13:21:26

标签: mysql sql

我在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也可以(但这不是我需要的)。
  • 将DATE列替换为例如VARCHAR也有效。

根据我的阅读,1067与安装问题有关,这在这种情况下很奇怪。

为了让这项工作有效,我该怎么做?

1 个答案:

答案 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,我只能推荐!