我需要使用现有数据向Mysql中的表添加主键。
状态:
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| country_code | varchar(2) | YES | | NULL | |
| state_code | varchar(20) | YES | | NULL | |
| state_name | varchar(255) | YES | | NULL | |
+--------------+--------------+------+-----+---------+-------+
我创建了一个States2表,该表为空,并且其中包含一个主键。
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| country_code | varchar(2) | YES | | NULL | |
| state_code | varchar(20) | YES | | NULL | |
| state_name | varchar(255) | YES | | NULL | |
+--------------+--------------+------+-----+---------+-------+
我现在要做的是从州获取数据并将其复制到州2,同时添加自动递增主键。
这是我尝试过的:
mysql> insert into states2 select NULL,states.* FROM states;
ERROR 1048 (23000): Column 'id' cannot be null
复制此密码并同时插入密钥的正确方法是什么?
答案 0 :(得分:2)
您正在为MySQL不允许的主键列明确分配一个null
值(主键不能为null
)。
只需将insert
语句的主键列分开,以便可以进行自动递增:
insert into states2 (country_code, state_code, state_name)
select country_code, state_code, state_name FROM states;