【问题标题】:importing table with primary auto_increment value zero to mariadb将主 auto_increment 值为零的表导入 mariadb
【发布时间】:2017-06-22 10:05:20
【问题描述】:

我正在尝试将数据库转储导入我的 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 */;

【问题讨论】:

  • 我还是有这个问题,你找到解决办法了吗?

标签: mysql sql import export mariadb


【解决方案1】:

据我所知,InnoDB 引擎不支持 NO_AUTO_VALUE_ON_ZERO 模式。不过它应该得到 MyISAM 的支持。

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

【讨论】:

  • 零来自我正在使用的框架,但不确定他们为什么使用它。也许这是用户错误的一部分,预计 auto_increment 以 1 开头,但设置为 0?
  • Grrr... 框架阻碍的另一种情况。
  • 在 Magento2-code-basis 中经常使用表 store_website 的零。如果问题仅在该表中,则手动修改很容易。任何人都知道,如果 M2 的其他表上存在相同的问题(auto_increment-column 上的 0)?
猜你喜欢
  • 1970-01-01
  • 2019-01-01
  • 2016-09-08
  • 2013-05-08
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 2019-06-20
  • 2017-02-08
相关资源
最近更新 更多