phpmyadmin:导入数据库后,主键没有自动递增属性
Posted
技术标签:
【中文标题】phpmyadmin:导入数据库后,主键没有自动递增属性【英文标题】:phpmyadmin : Din't get auto_increment property on primary key after importing database 【发布时间】:2019-12-10 19:30:05 【问题描述】:我在 phpmyadmin 中导入了一个数据库。 这是一个接近 990MB 的大型数据库。 但是导入后,我有一个问题。 所有键约束都在那里,但主键未设置为自动递增。 因此,当我在表中插入数据时,它会引发重复条目和主键违规错误。
1062 - 键“PRIMARY”的重复条目“0”
这显然是因为它在未设置 auto_increment 的情况下插入 0
我尝试通过运行 ALTER TABLE users AUTO_INCREMENT=1001;
来重置 AUTO_INCREMENT
然后尝试检查 id 字段中的 auto_increment 但它给了我这个错误
查询错误: 1062 - ALTER TABLE 导致 auto_increment 重新排序,导致键 'PRIMARY' 的重复条目 '1'
【问题讨论】:
【参考方案1】:你可以试试
检查索引和主键
删除索引和主键
ALTER TABLE `users ` DROP PRIMARY KEY
-
添加 Auto_increment 并添加主键
ALTER TABLE tablename AUTO_INCREMENT = 1
对于 InnoDB,您不能将 auto_increment 值设置为低于或等于当前最高索引。
请注意,您不能将计数器重置为小于或等于>任何已使用的值。对于 MyISAM,如果该值小于或 > 等于 AUTO_INCREMENT 列中当前的最大值,则 > 值将重置为当前最大值加一。对于 InnoDB,如果值 > 小于列中当前的最大值,则不会发生错误并且 > 当前序列值不会改变。
所以,我们可以
ALTER TABLE `users` ADD `id` INT( 11 ) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST
希望它对你有用。
【讨论】:
它已经有 id 并且拥有所有的 id 很重要。删除主要并再次添加 id 不会影响现有的 id 值?以上是关于phpmyadmin:导入数据库后,主键没有自动递增属性的主要内容,如果未能解决你的问题,请参考以下文章
通过 phpmyadmin 导入 csv 或 sql 并跳过 PK?
删除特定行后如何修改数据库 phpmyadmin 中的主键?
#导入Word文档图片#值得收藏:当向数据库导入大量数据时,mysql主键唯一键重复插入,如何丝滑操作并不导入重复数据呢