Mysql 插入到两个表之间未重置自动增量

Mysql 插入到两个表之间未重置自动增量,mysql,sql,Mysql,Sql,我有这个剧本: #create departments table CREATE TABLE `departments` ( `department_id` int(11) NOT NULL AUTO_INCREMENT, `department_name` varchar(45) DEFAULT NULL, PRIMARY KEY (`department_id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; #

我有这个剧本:

#create departments table
CREATE TABLE `departments` (
  `department_id` int(11) NOT NULL AUTO_INCREMENT,
  `department_name` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`department_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

#inserts - departments table
INSERT INTO `departments`(`department_name`)VALUES("Parks and recreation");
INSERT INTO `departments`(`department_name`)VALUES("Portable immediate treatment");
INSERT INTO `departments`(`department_name`)VALUES("Veterinary");
INSERT INTO `departments`(`department_name`)VALUES("Gardening");
INSERT INTO `departments`(`department_name`)VALUES("Business Registration");
INSERT INTO `departments`(`department_name`)VALUES("Environment");
INSERT INTO `departments`(`department_name`)VALUES("Sanitation");
INSERT INTO `departments`(`department_name`)VALUES("Recycling");
INSERT INTO `departments`(`department_name`)VALUES("all");

#create departments_in_langueage table
CREATE TABLE `departments_in_language` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `department_id` int(11) DEFAULT NULL,
  `language` varchar(45) DEFAULT NULL,
  `description` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `departments_in_language_department_id_idx` (`department_id`),
  CONSTRAINT `departments_in_language_department_id` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

#inserts - departments_in_language table
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("1","hebrew","חזות העיר");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("2","hebrew","ניידת טיפול מיידי");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("3","hebrew","ווטרינריה");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("4","hebrew","גינון");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("5","hebrew","רישוי עסקים");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("6","hebrew","איכות הסביבה");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("7","hebrew","תברואה");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("8","hebrew","מיחזור");
INSERT INTO `departments_in_language`(`department_id`,`language`,`description`)VALUES("9","hebrew","כללי");
语言中的部门具有名为=“部门id”(外键)的字段。 问题是: 运行此脚本时,出现了一些错误:

Cannot add or update a child row: a foreign key constraint fails (`teres`.`departments_in_language`, CONSTRAINT `departments_in_language_department_id` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`) ON DELETE NO ACTION ON UPDATE NO )
我看到部门的Id不是从1开始的, 这意味着插入之间的“自动”计数器未复位; 这就是错误的原因。
我能做什么?

您的表创建查询将
自动增量设置为10和9。它应该设置为1

#create departments table
CREATE TABLE `departments` (
  [...]
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

#create departments_in_langueage table
CREATE TABLE `departments_in_language` (
  [...]
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

您的表创建查询将自动增量设置为10和9。它应该设置为1

#create departments table
CREATE TABLE `departments` (
  [...]
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

#create departments_in_langueage table
CREATE TABLE `departments_in_language` (
  [...]
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

在第一个表中,
AUTO INCREMENT
设置为10,您试图将
department\u id
插入为1,2,3,4。。。首先,请尝试将
AUTO INCREMENT
设置为1是,我知道,但我想重置AUTO…如果您希望简单地重置AUTO INCREMENT,只需提醒您的表
ALTER table table name AUTO_INCREMENT=1
可以,但我不建议您这样做否,但是,既然已经存在具有相同ID的数据,您为什么要再次重置它呢?这可能会导致其他问题。在第一个表中,
AUTO INCREMENT
设置为10,并且您正在尝试将
部门ID
插入为1,2,3,4。。。首先,请尝试将
AUTO INCREMENT
设置为1是,我知道,但我想重置AUTO…如果您希望简单地重置AUTO INCREMENT,只需提醒您的表
ALTER table table name AUTO_INCREMENT=1
可以,但我不建议您这样做否,但是,既然可能已经存在具有相同ID的数据,您为什么要再次重置它?这可能会导致其他问题。当我在创建表后没有插入时,是否需要更改自动字段?请参阅我的编辑,我错过了表创建中的
auto_INCREMENT
声明。当我在创建表后没有插入时,我需要更改自动字段吗?请参见我的编辑,我错过了表创建中的
auto\u INCREMENT
声明。