我正在尝试将数据库转储导入到我的 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 */;
最佳答案
据我所知,InnoDB引擎不支持NO_AUTO_VALUE_ON_ZERO模式。不过 MyISAM 应该支持它。
请注意,不推荐使用零作为 auto_increment 列中的键,因此建议避免使用它。是否可以选择将数据导入 MyISAM 表,尽一切努力将零键更改为正数,然后切换到 InnoDB?
关于mysql - 将主 auto_increment 值为零的表导入到 mariadb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44696254/