2

I am trying to migrate my Django application database from SQLite to MySQl.

I'm using the --natural flag with manage.py dumpdata as suggested by this answer.

Here are my models

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

I'm dumping the data using the command manage.py dumdata --natural > hunt.json

Then I'm updating the settings to connect to a MySQL database.

Next I'm syncing the database using manage.py syncdb.

Then using manage.py reset contenttypes gives me the error (1217, 'Cannot delete or update a parent row: a foreign key constraint fails')

What's wrong here?

On using manage.py loaddata hunt it gives an error IntegrityError: Could not load contenttypes.ContentType(pk=23): (1062, "Duplicate entry 'south-migrationhistory' for key 'app_label'")

Community
  • 1
  • 1
Unknown Coder
  • 783
  • 3
  • 12
  • 23

1 Answers1

-2

I updated my database in settings as follows and the error goes away.

'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;",
        }
    },
Unknown Coder
  • 783
  • 3
  • 12
  • 23
  • 1
    This just makes it so you never check any foreign keys. This obviates the whole point of foreign keys, which is referential integrity. – overgroove May 10 '17 at 22:15