将主auto_increment值为零的表导入mariadb

时间:2017-06-22 10:05:21

标签: mysql sql import export mariadb

我试图将数据库转储导入我的mariaDb 10.2.6数据库。 它是Magento 2数据库。

有这个表导入:

# Dump of table store_website
# ------------------------------------------------------------

DROP TABLE IF EXISTS `store_website`;

CREATE TABLE `store_website` (
  `website_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Website Id',
  `code` varchar(32) DEFAULT NULL COMMENT 'Code',
  `name` varchar(64) DEFAULT NULL COMMENT 'Website Name',
  `sort_order` smallint(5) unsigned NOT NULL DEFAULT 0 COMMENT 'Sort Order',
  `default_group_id` smallint(5) unsigned NOT NULL DEFAULT 0 COMMENT 'Default Group Id',
  `is_default` smallint(5) unsigned DEFAULT 0 COMMENT 'Defines Is Website Default',
  PRIMARY KEY (`website_id`),
  UNIQUE KEY `STORE_WEBSITE_CODE` (`code`),
  KEY `STORE_WEBSITE_SORT_ORDER` (`sort_order`),
  KEY `STORE_WEBSITE_DEFAULT_GROUP_ID` (`default_group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Websites';

LOCK TABLES `store_website` WRITE;
/*!40000 ALTER TABLE `store_website` DISABLE KEYS */;

INSERT INTO `store_website` (`website_id`, `code`, `name`, `sort_order`, `default_group_id`, `is_default`)
VALUES
    (0,'admin','Admin',0,0,0),
    (1,'my_website','MY_WEBSITE',0,1,1);

/*!40000 ALTER TABLE `store_website` ENABLE KEYS */;
UNLOCK TABLES;

这无法给我一个重复的密钥1错误。显然,它试图将值0作为新增量插入,该增量为1,但已经在表中。 即使设置了以下选项,也会出现此错误:

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

1 个答案:

答案 0 :(得分:0)

据我所知,InnoDB引擎不支持NO_AUTO_VALUE_ON_ZERO模式。它应该由MyISAM支持。

请注意,建议不要在auto_increment列中使用零作为键,因此建议避免使用它。是否可以将数据导入MyISAM表,可以将零键更改为正数,然后切换到InnoDB?