ALTER TABLE causes auto_increment resulting key 'PRIMARY'

修改表为主键的自动增长值时,报出以下错误:
mysql> ALTER TABLE YOON CHANGE COLUMN id id INT(11) NOT NULL AUTO_INCREMENT ADD PRIMARY KEY (id);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ADD PRIMARY KEY (id)‘ at line 1

解决:
将ID值为0的那条记录或其他大于0且不重复的数据;

查询重复数据:
mysql> select id,count(*) as count from yoon group by id having count > 1;
+------+-------+
| id   | count |
+------+-------+
|    1 |     2 |
+------+-------+
1 row in set (0.00 sec)

mysql> select * from yoon where id =1;
+------+------+
| id   | name |
+------+------+
|    1 | AAAA |
|    1 | DDDD |
+------+------+
2 rows in set (0.00 sec)

mysql> delete from yoon where name=‘DDDD‘;
Query OK, 1 row affected (0.00 sec)

添加表为主键的自动增长值时,依旧报出以下错误:
mysql> ALTER TABLE YOON CHANGE COLUMN id id INT(11) NOT NULL AUTO_INCREMENT ADD PRIMARY KEY (id);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ADD PRIMARY KEY (id)‘ at line 1

原因:
很多人都忽略了NULL值:
mysql> select * from yoon where id is null;  
+------+------+
| id   | name |
+------+------+
| NULL | EEEE |
+------+------+
1 row in set (0.00 sec)

mysql> delete from yoon where id is null;
Query OK, 1 row affected (0.01 sec)

mysql> alter table yoon change column id id int(11) not null auto_increment,add primary key(id);
Query OK, 3 rows affected (0.04 sec)
Records: 3  Duplicates: 0  Warnings: 0

or

alter table yoon modify id int(11) not null auto_increment primary key;

ALTER TABLE causes auto_increment resulting key 'PRIMARY'

时间: 2024-10-09 20:04:38

ALTER TABLE causes auto_increment resulting key 'PRIMARY'的相关文章

mysql ERROR 1062: ALTER TABLE causes auto_increment resequen

当我用Navicat尝试修改已有记录的mysql数据表的主键为自动增长时,报出以下错误 1602 ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ’1′ for key ‘PRIMARY’ 解决方法: 第1步:将主键字段值为0的那条记录值改为其他大于0且不重复的任意数 第2步:修改主键字段为auto_increment 第3步:把刚才修改过的那条记录的值还原 来自:http://blog.s

sql 创建外键关系时,ALTER TABLE 语句与 FOREIGN KEY 约束"FK_Doorl_REFERENCE_Floor"冲突

http://blog.csdn.net/dingxingmei/article/details/12996665 关键点: 可视化建立关系操作中有一个属性 : 在创建或重新启用时检查现有数据“    默认为“  是”   把它设置为 否 . 就可以了

【总结】alter table *** add constraint *** 用法

1. 主键约束 要对一个列加主键约束的话,这列就必须要满足的条件就是非空.因为主键约束:就是对一个列进行了约束,约束为(非空.不重复). [格式]alter table 表格名称 add constraint 约束名称 增加的约束类型 (列名) 例子:要对一个列加主键,列名为id,表名为emp alter table emp add constraint ppp primary key (id) 2. check约束就是给一列的数据进行了限制 [格式]alter table 表名称 add co

【SQL篇章】【SQL语句梳理 :--基于MySQL5.6】【已梳理:ALTER TABLE解析】

ALTER TABLE 解析实例: SQL: 1.增加列 2.增加列,调整列顺序 3.增加索引 4.增加约束 5.增加全文索引FULL-TEXT 6.改变列的默认值 7.改变列名字(类型,顺序) 8.不改变列名字 9.删除列 10.删除主键 11.删除索引 12.删除约束 13.改表名 14.改变字符集 创建一张表 CREATE TABLE t1 (a INTEGER,b CHAR(10)); 1. 增加列 格式: ADD [COLUMN] (col_name column_definition

alter table *** add constraint *** 用法

1.主键约束:要对一个列加主键约束的话,这列就必须要满足的条件就是分空因为主键约束:就是对一个列进行了约束,约束为(非空.不重复)以下是代码   要对一个列加主键,列名为id,表名为emp格式为:alter table 表格名称 add constraint 约束名称 增加的约束类型 (列名)例子:alter table emp add constraint ppp primary key (id)--------------------------------2.check约束:就是给一列的数

SQL ALTER TABLE 语句在项目中的使用

1.在实际的项目开发过程中,之前已经创建好的实体类可能需要增加/删除字段,亦或是更改已有字段的属性,比如主键的增长策略从自增型改为UUID型,那么就会涉及到 SQL 中 alter table 语句的使用. ALTER TABLE table_name ADD column_name datatype 增加表中的列 ALTER TABLE table_name DROP COLUMN column_name 删除表中的列 ALTER TABLE table_name ALTER COLUMN c

Laravel 5.4 migrate报错:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `us ers_email_unique`(`email`))

Laravel 5.4 migrate报错:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `us     ers_email_unique`(`email`)) public function up() { Schema::create('users', function (Blu

mysql主键设置成auto_increment时,进行并发性能测试出现主键重复Duplicate entry 'xxx' for key 'PRIMARY'

mysql主键设置成auto_increment时,进行并发性能测试出现主键重复Duplicate entry 'xxx' for key 'PRIMARY' 解决方法: 在my.cnf的[mysqld]片段中添加设置innodb_autoinc_lock_mode=0 同时注意调大jdbc的活跃链接数,如设置 jdbc.maxActive=300,因为设置innodb_autoinc_lock_mode=0可能导致链接过多. 注意,这种方式只需要在并发性能测试时设置,因为这种方式在插入记录时需

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

OS: centos 6.3DB: 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 |