(1062,“重复输入'0'用于键'PRIMARY'”)

时间:2014-07-14 14:54:11

标签: mysql django duplicates primary-key auto-increment

我收到此错误(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)

2 个答案:

答案 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的列,然后自动增加使用该列更容易迁移...