mysql 在已存在的表中添加/删除字段约束AUTO_INCREMENT遇到的问题

本文详细介绍了如何在MySQL中为已存在的表添加或删除字段约束AUTO_INCREMENT修饰符的方法,包括解决因重复键值导致的错误,以及正确添加主键的过程。

1. 在已存在的表中添加字段约束AUTO_INCREMENT修饰符

  mysql> alter table user modify uid int auto_increment primary key;
  ERROR 1062 (23000): ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1' for key 'PRIMARY'

  理解:uid有0, 而auto_increment是从1开始, 所以修改失败.

  把uid字段的0改成非零后, 再修改添加就可以了:

  mysql>update user set uid=2 where uid=0;

  mysql>alter table user modify uid int auto_increment;

成功!

2. 在已存在的表中删除字段约束AUTO_INCREMENT修饰符

  mysql>alter table user modify uid int;

  如果表中存在其他约束, 如primary key, 依然存在, 需再删除一次约束:

  mysql>alter table user drop primary key;

  注 : 如果primary key和auto_increment同时存在, 需先删除auto_increment, 才能删除primary key.

3. 如果要添加auto_increment, 需先添加primary key

  mysql> alter table user modify uid int auto_increment;

  报错: ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

  mysql>alter table user add primary key(uid);

  mysql>alter table user modify uid int auto_increment;

转载于:https://www.cnblogs.com/ayeex/p/10992872.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值