无法将 MySQL Table 从 MyISAM 转换为 InnoDB
Cannot convert MySQL Table from MyISAM to InnoDB
我正在尝试将 MySQL Table 从 MyISAM 转换为 InnoDB。
我使用以下命令:
ALTER TABLE `wp_wpr_rucss_used_css` ENGINE=InnoDB
但是得到如下错误:
#1067 - Invalid default value for 'modified'
为什么?如何解决?
更新
我运行以下命令
SHOW CREATE TABLE `wp_wpr_rucss_used_css`
和
得到如下结果:
CREATE TABLE `wp_wpr_rucss_used_css` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`url` varchar(2000) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
`css` longtext COLLATE utf8mb4_unicode_520_ci,
`unprocessedcss` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
`retries` tinyint(1) NOT NULL DEFAULT '1',
`is_mobile` tinyint(1) NOT NULL DEFAULT '0',
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`last_accessed` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `url` (`url`(150),`is_mobile`),
KEY `modified` (`modified`),
KEY `last_accessed` (`last_accessed`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci
似乎你有 0000-00-00 00:00:00 作为默认值 所以
一般来说,问题是因为 sql_modes。请通过命令检查您当前的sql_modes:
show variables like 'sql_mode';
删除 sql_mode "NO_ZERO_IN_DATE,NO_ZERO_DATE"(如果有)。然后 运行 你的改变命令。
我正在尝试将 MySQL Table 从 MyISAM 转换为 InnoDB。
我使用以下命令:
ALTER TABLE `wp_wpr_rucss_used_css` ENGINE=InnoDB
但是得到如下错误:
#1067 - Invalid default value for 'modified'
为什么?如何解决?
更新
我运行以下命令
SHOW CREATE TABLE `wp_wpr_rucss_used_css`
和
得到如下结果:
CREATE TABLE `wp_wpr_rucss_used_css` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`url` varchar(2000) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
`css` longtext COLLATE utf8mb4_unicode_520_ci,
`unprocessedcss` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
`retries` tinyint(1) NOT NULL DEFAULT '1',
`is_mobile` tinyint(1) NOT NULL DEFAULT '0',
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`last_accessed` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `url` (`url`(150),`is_mobile`),
KEY `modified` (`modified`),
KEY `last_accessed` (`last_accessed`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci
似乎你有 0000-00-00 00:00:00 作为默认值 所以 一般来说,问题是因为 sql_modes。请通过命令检查您当前的sql_modes:
show variables like 'sql_mode';
删除 sql_mode "NO_ZERO_IN_DATE,NO_ZERO_DATE"(如果有)。然后 运行 你的改变命令。