2015-04-04 127 views
2

我有类似的问题,在Django论坛上提出this ticket。我如何解决这个问题?Django MySQL错误创建表

我也有一个用户模型扩展,如下: -

class Profile(models.Model): 
    street_address = models.CharField(max_length=80, blank=True, null=True) 
    city = models.CharField(max_length=80, blank=True, null=True) 
    state = models.CharField(max_length=80, blank=True, null=True) 
    zip = models.CharField(max_length=30, blank=True, null=True) 
    country = models.CharField(max_length=50, blank=True, null=True) 
    phone = models.CharField(max_length=50, blank=True, null=True) 
    birth = models.DateField(blank=True, null=True) 
    photo = models.ImageField(upload_to='media') 
    user = models.OneToOneField(User,primary_key=True) 

但我不认为这个问题是与模型,因为即使我删除包含从INSTALLED_APPS列表模型中的应用程序,运行manage.py migrate命令,它仍然抛出了同样的错误,即

django.db.utils.OperationalError: (1005, "Can't create table 'db.#sql-456_113' (errno: 150)") 

不包括任何的应用程序,它工作正常。任何领导都会非常有帮助。

+0

你使用过python manage.py syncdb命令吗? – 2015-04-04 15:06:51

+1

它已被弃用,因此未被使用。我直接应用了'python manage.py migrate'。 – PythonEnthusiast 2015-04-04 15:08:34

+0

嗯,我试过'python manage.py makemgration appname',然后'python manage.py migrate',它工作。但我必须为每个应用程序执行'python manage.py makemgration appname'。我如何一次完成所有应用程序的迁移。 ?? – PythonEnthusiast 2015-04-04 15:15:46

回答

2

检查数据库表的存储引擎。如所引用的here旧版MySQL使用的MyISAM与实际的InnoDB存储引擎不兼容。所以,如果你的数据库为不同的表有不同的存储引擎,并且你试图创建一个外键,你可能会发现这个错误。至少,这是我的情况:) 希望这可以帮助别人