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 自动递增主键行为奇怪

phpmyadmin 怎么自动备份数据库

通过 phpmyadmin 导入 csv 或 sql 并跳过 PK?

删除特定行后如何修改数据库 phpmyadmin 中的主键?

#导入Word文档图片#值得收藏:当向数据库导入大量数据时,mysql主键唯一键重复插入,如何丝滑操作并不导入重复数据呢

phpmyadmin的MySQL数据库中,主键、索引、唯一,各是啥意思。。?