我需要添加一个主键到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 | |
+--------------+--------------+------+-----+---------+-------+
我现在要做的是从states获取数据并将其复制到states2,同时添加autoincrement主键。
这就是我尝试过的:
mysql> insert into states2 select NULL,states.* FROM states;
ERROR 1048 (23000): Column 'id' cannot be null
复制此文件并同时插入密钥的正确方法是什么?
1条答案
按热度按时间nwlqm0z11#
您正在明确地指定
null
值设置为主键列,mysql不允许这样做(不能设置主键)null
).只需将主键列与
insert
语句进行自动递增: