我创建了一个新的数据库(usuarios),我想将旧值插入到新表中,但我的 SQL 备份还保存了自动增量值,它是主键,所以当我导入文件时会显示错误消息,这是由于主键值已在新表中使用,例如:
INSERT INTO `usuarios` VALUES
(5, 'USERBETA', 'USERINFO')
它说主键 5 是重复的,如何解决这个问题以忽略旧的 auto_increment 值并使用新的值?
更新:此查询将更改您现有的数据以使用更大的 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;