2014-01-05 34 views
2

我试图将我的Django应用程序数据库从SQLite迁移到MySQl。尽管使用了外键约束失败 - 自然标志

我使用--natural标志,manage.py dumpdatathis answer所示。

下面是使用命令manage.py dumdata --natural > hunt.json

然后我更新的设置连接到MySQL数据库我的模型

from django.db import models 

class DJManager(models.Manager): 
    def get_by_natural_key(self, name): 
     return self.get(name=name) 

class DJ(models.Model): 
    objects = DJManager() 

    name = models.CharField(max_length=50, unique=True) 
    rank = models.IntegerField() 
    img = models.ImageField(upload_to='/img/', height_field=None, width_field=None) 
    soundcloud_profile = models.CharField(max_length=100, blank=True, null=True) 

    def natural_key(self): 
     return (self.name) 

    #for human readable representation of objects 
    def __unicode__(self): 
     return self.name 

class Song(models.Model): 
    song_id = models.IntegerField() 
    name = models.CharField(max_length=100) 
    title = models.CharField(max_length=100) 
    normalized_name = models.CharField(max_length=100) 
    artist = models.ForeignKey(DJ, default=None, blank=True, null=True) 
    artists = models.CharField(max_length=100) 
    remixers = models.CharField(max_length=100, default=None, blank=True, null=True) 
    release_date = models.DateField() 
    slug = models.CharField(max_length=100) 
    artwork = models.CharField(max_length=100) 
    genres = models.CharField(max_length=50) 
    duplicate = models.BooleanField(default=False) 
    votes = models.IntegerField(default=0) 

    #for human readable representation of objects 
    def __unicode__(self): 
     return self.normalized_name 

我倾倒数据。

接下来我正在使用manage.py syncdb来同步数据库。

然后使用manage.py reset contenttypes给我的错误(1217, 'Cannot delete or update a parent row: a foreign key constraint fails')

什么错在这里的?

使用manage.py loaddata hunt它给出了一个错误IntegrityError: Could not load contenttypes.ContentType(pk=23): (1062, "Duplicate entry 'south-migrationhistory' for key 'app_label'")

回答

-1

我更新我的数据库中设置如下,错误消失。

'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'abc', 
     'USER': 'root', 
     'PASSWORD': 'root', 
     'HOST': '127.0.0.1', 
     'PORT': '3306', 
     'OPTIONS': { 
      "init_command": "SET foreign_key_checks = 0;", 
     } 
    }, 
+0

这只是让你从不检查任何外键。这消除了外键的整点,这是参照完整性。 – overgroove