我收到此错误(1062, "Duplicate entry '0' for key 'PRIMARY'")
。这是在我将我的Django应用程序从sqlite3迁移到MySQL之后发生的。这是关注的表格:
mysql> describe meddy1_specialization;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(30) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
以下是模型:
class Specialization(models.Model):
name = models.CharField(max_length=30)
def __unicode__(self):
return self.name
以下是表格中的数据:
mysql> select * from meddy1_specialization;
+----+--------------------+
| id | name |
+----+--------------------+
| 1 | Dentist |
| 2 | Dermatologist |
| 3 | Primary Care |
| 4 | Ophthalmologist |
| 5 | Pediatrician |
| 6 | Orthopedist |
| 7 | Ear, Nose & Throat |
| 8 | Gynecologist |
| 9 | test |
| 13 | test |
| 14 | test1 |
+----+--------------------+
11 rows in set (0.00 sec)
答案 0 :(得分:1)
你可以在你的mysql数据库中检查增量数是多少吗? 似乎mysql试图插入一个具有相同id的行。
答案 1 :(得分:0)
在尝试迁移之前,请确保target_table为空...首先从目标表中删除所有内容。错误可能是由id号的重复引起的,即使它是= 0(新记录的默认值)。尝试为每条记录明确定义每个ID号。
在您的情况下从sqlite3导出到script.sql文件,然后找到数据并将其添加到脚本中;
insert into `meddy1_specialization` (`id`, `name`) VALUES
(1 'Dentist'),
(2,'Dermatologist'),
(3,'Primary Care'),
(4,'Ophthalmologist'),
(5,'Pediatrician'),
...--plug in all your values in this fashion
发生这种情况的另一种情况是从一个Msql表到另一个表的迁移信息...可能还需要显式定义...可以在源表上添加一个具有唯一ID的列,然后自动增加使用该列更容易迁移...