Python 尽管使用--natural标志,外键约束仍失败

Python 尽管使用--natural标志,外键约束仍失败,python,mysql,django,Python,Mysql,Django,我正在尝试将Django应用程序数据库从SQLite迁移到MySQl 我使用的是--natural标志,带有manage.py dumpdata,正如所建议的那样 这是我的模型 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)

我正在尝试将Django应用程序数据库从SQLite迁移到MySQl

我使用的是
--natural
标志,带有
manage.py dumpdata
,正如所建议的那样

这是我的模型

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 dumdata--natural>hunt.json来转储数据

然后我将更新设置以连接到MySQL数据库

接下来,我将使用
manage.py syncdb
同步数据库

然后使用
manage.py reset contenttypes
会显示错误
(1217,“无法删除或更新父行:外键约束失败”)

这里怎么了


使用
manage.py loaddata hunt
时出现错误
IntegrityError:无法加载contenttypes.ContentType(pk=23):(1062,“重复输入'south migrationhistory'键'app_label')
我在设置中更新了数据库,如下所示,错误消失

'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;",
        }
    },

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

'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;",
        }
    },

这使得您永远不会检查任何外键。这就省去了外键的全部意义,即引用完整性。这只是为了使您永远不会检查任何外键。这就消除了外键的全部要点,即引用完整性。