【问题标题】:ERROR 1067 (42000) Invalid default value '0000-00-00 00:00:00'错误 1067 (42000) 无效的默认值 '0000-00-00 00:00:00'
【发布时间】:2018-01-10 07:45:38
【问题描述】:

通过 SSH 在 Ubuntu 服务器上使用 SQL Ver 14.14 Distrib 5.7.20 导入 SQL 文件,对于 Linux (x86_64) 使用 EditLine 包装器。

错误指向的行就是这一行:

 CREATE TABLE `wp_users` (

有 user_registered 的行是这一行:

   `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

不知道哪里出了问题。

请求的整个 CREATE TABLE 命令:

 CREATE TABLE `wp_users` (
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_login` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`user_pass` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`user_nicename` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`user_email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`user_url` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`user_activation_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`user_status` int(11) NOT NULL DEFAULT '0',
`display_name` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
PRIMARY KEY (`ID`),
KEY `user_login_key` (`user_login`),
KEY `user_nicename` (`user_nicename`),
KEY `user_email` (`user_email`)
) ENGINE=MyISAM AUTO_INCREMENT=53 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ;

【问题讨论】:

  • 你能显示完整的CREATE TABLE 命令吗?
  • @SebastianBrosch 帖子已更新。

标签: mysql sql


【解决方案1】:

我猜您使用的是 MySQL 5.7(或更高版本)。 SQL mode 的默认值是 NO_ZERO_IN_DATE,NO_ZERO_DATE

你可以检查一下

SHOW GLOBAL VARIABLES LIKE 'sql_mode';
/* or...*/
SHOW SESSION VARIABLES LIKE 'sql_mode';

要么从 sql 模式中删除上述值,要么只将列设为可空并存储 NULL 而不是 0000-00-00 00:00:00。我更喜欢后者。不浪费存储,含义明确。

【讨论】:

  • 原来是这样的? user_registered datetime NULL DEFAULT ' ',
  • 宁可user_registered datetime NULL DEFAULT NULL
  • SQL 文件中有更多错误,但与日期中的零相同的错误。用您的解决方案将它们全部修复。
猜你喜欢
  • 2012-03-16
  • 2019-04-02
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多