mysqldump restore error - 字段类型时间戳的默认值无效

时间:2014-09-18 17:05:19

标签: mysql sql magento

我正在尝试将Magento 1.8数据库的mysqldump(在MySQL 5.6社区上托管)恢复到MySQL 5.5社区服务器中,我收到以下错误:

ERROR 1067 (42000) at line 190: Invalid default value for 'created_at'

查看此行周围的.sql文件,似乎是这个查询块:

--
-- Table structure for table `api2_acl_role`
--

DROP TABLE IF EXISTS `api2_acl_role`;
CREATE TABLE `api2_acl_role` (
  `entity_id` int(10) unsigned auto_increment,
  `created_at` timestamp DEFAULT 'CURRENT_TIMESTAMP',
  `updated_at` timestamp,
  `role_name` varchar(255),
  PRIMARY KEY (`entity_id`),
  KEY `IDX_API2_ACL_ROLE_CREATED_AT` (`created_at`),
  KEY `IDX_API2_ACL_ROLE_UPDATED_AT` (`updated_at`)
)/*! engine=InnoDB comment='Api2 Global ACL Roles' */;

知道如何解决此问题吗?

2 个答案:

答案 0 :(得分:0)

'周围不应该是CURRENT_TIMESTAMP,它是MySQL中的一项特殊功能。

答案 1 :(得分:0)

我在CREATE语句中看到了两个问题,如下所示

从下面一行的'移除'CURRENT_TIMESTAMP'(单引号)。那不是字符串文字。

`created_at` timestamp DEFAULT 'CURRENT_TIMESTAMP'

[根据您的评论]

发生错误是因为MySQL只能索引BLOB或TEXT列的前N个字符,而您在定义密钥时没有为data_index列指定任何长度。

KEY `FTI_CATALOGSEARCH_FULLTEXT_DATA_INDEX` (`data_index`)

您的CREATE声明应该是

CREATE TABLE `catalogsearch_fulltext` (
  `fulltext_id` INT(10) UNSIGNED AUTO_INCREMENT,
  `product_id` INT(10) UNSIGNED,
  `store_id` SMALLINT(5) UNSIGNED,
  `data_index` longtext,
  PRIMARY KEY (`fulltext_id`),
  UNIQUE `UNQ_CATALOGSEARCH_FULLTEXT_PRODUCT_ID_STORE_ID` 
  (`product_id`,`store_id`),
  KEY `FTI_CATALOGSEARCH_FULLTEXT_DATA_INDEX` (`data_index`(255))) <-- Here

如果有疑问,请检查此Fiddle Demo