0

我创建了一个新的数据库(usuarios),我想将旧值插入到新表中,但我的 SQL 备份还保存了自动增量值,它是主键,所以当我导入文件时会显示错误消息,这是由于主键值已在新表中使用,例如:

INSERT INTO `usuarios` VALUES
(5, 'USERBETA', 'USERINFO')

它说主键 5 是重复的,如何解决这个问题以忽略旧的 auto_increment 值并使用新的值?

4

1 回答 1

0

更新:此查询将更改您现有的数据以使用更大的 ID 号,此时您可以导入旧数据。只要将现有的表数据ID移动到足够大的数字,然后导入旧数据,就应该没有歧义。

UPDATE usuarios SET id = (id+10000)

(10000是任意的,它应该比旧数据中最大的现有ID大一些)

然后将您的 ID 号重新设置为 1:

ALTER TABLE `usuarios` AUTO_INCREMENT = 1;

然后导入您的数据。

原始答案

如果您没有关系表(不取决于已在 table 中设置的固定 ID usuarios),那么您可以只导入而不使用该id列。但是,如果您需要保留那些id已分配的旧文件,您可以在导入之前关闭 auto_increment,然后在插入所有内容后重新启用。

假设id是您的 id 列:

删除任何现有(旧)数据:

TRUNCATE TABLE usuarios

删除 auto_increment

ALTER TABLE usuarios CHANGE `id` INT(11) NOT NULL

像以前一样导入您的数据。

然后,重新添加 auto_increment:

ALTER TABLE usuarios MODIFY `id` INTEGER NOT NULL AUTO_INCREMENT;
ALTER TABLE `usuarios` AUTO_INCREMENT = 1234;
于 2013-11-01T16:29:53.420 回答