ERROR 1062 (23000):&nb…

OS: centos 6.3
DB: 5.5.14

测试创建yoon测试表,没有主键,没有索引,基础数据内容如下:

mysql> select * from yoon;
+----+----------+------+
| id | name | user |
+----+----------+------+
| 1 | \""##!aa | NULL |
| 2 | z2 | NULL |
| 3 | z3 | NULL |
| 4 | z4 | NULL |
| 5 | z5 | NULL |
+----+----------+------+
5 rows in set (0.00 sec)


测试通过一条命令将id设为自增主键,命令alter table yoon add constraint auto_increment primary key yoon(id);创建成功,但是插入2条数据发现报错,场景如下:

mysql> desc yoon;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO      | 0            |
| name  | varchar(20) | YES     | NULL         |
| user  | varchar(20) | YES     | NULL         |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)


mysql> select * from yoon;

+----+----------+------+
| id | name     | user |
+----+----------+------+
1 | \""##!aa | NULL |
2 | z2       | NULL |
3 | z3       | NULL |
4 | z4       | NULL |
5 | z5       | NULL |
+----+----------+------+
5 rows in set (0.00 sec)


mysql> show index from yoon;

Empty set (0.00 sec)


mysql> alter table yoon add constraint auto_increment primary key yoon(id);

Query OK, 0 rows affected (0.29 sec)
Records: 0  Duplicates: 0  Warnings: 0


mysql> show index from yoon;

+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| yoon          0 | PRIMARY            1 | id          | A                  6 |     NULL | NULL       | BTREE                          |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.01 sec)


mysql> insert into yoon(name,user) values ('z','HHH'); 

Query OK, 1 row affected (0.02 sec)


mysql> select * from yoon;

+----+----------+------+
| id | name     | user |
+----+----------+------+
 0 | z        | HHH  |
1 | \""##!aa | NULL |
2 | z2       | NULL |
3 | z3       | NULL |
4 | z4       | NULL |
5 | z5       | NULL |
+----+----------+------+
6 rows in set (0.01 sec)


mysql> insert into yoon(name,user) values ('z6','HHH'); 

ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY'


mysql> delete from yoon where id=0;

Query OK, 1 row affected (0.01 sec)


mysql> show index from yoon;

+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| yoon          0 | PRIMARY            1 | id          | A                  6 |     NULL | NULL       | BTREE                          |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)

mysql> select * from yoon;
+----+----------+------+
| id | name     | user |
+----+----------+------+
1 | \""##!aa | NULL |
2 | z2       | NULL |
3 | z3       | NULL |
4 | z4       | NULL |
5 | z5       | NULL |
+----+----------+------+
5 rows in set (0.00 sec)


mysql> alter table yoon modify column id int auto_increment;

Query OK, 5 rows affected (0.03 sec)
Records: 5  Duplicates: 0  Warnings: 0


mysql> select * from yoon;

+----+----------+------+
| id | name     | user |
+----+----------+------+
1 | \""##!aa | NULL |
2 | z2       | NULL |
3 | z3       | NULL |
4 | z4       | NULL |
5 | z5       | NULL |
6 | z6       | HHH  |
+----+----------+------+
6 rows in set (0.00 sec)

总结:主要原因alter语法使用不正确,有时候不报错,并不代表命令正确。具体语法如下:
http://dev.mysql.com/doc/refman/5.0/en/alter-table.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值