django makemigrations 上的“表不存在”

s_p*_*ria 6 mysql migration django django-models

django 1.11使用 的应用程序上mysql,我有 3 个应用程序,其中一个应用程序有一个“国家/地区”模型:

class Country(models.Model):
    countryId = models.AutoField(primary_key=True, db_column='country_id')
    name = models.CharField(max_length=100)
    code = models.CharField(max_length=3)

    class Meta:
        db_table = 'country'
Run Code Online (Sandbox Code Playgroud)

当我尝试时,makemigrations我收到此错误:

django.db.utils.ProgrammingError: (1146, "Table 'dbname.country' doesn't exist")
Run Code Online (Sandbox Code Playgroud)

如果我使用 为另一个与此模型及其数据库表无关的应用程序进行迁移./manage.py makemigrations another_app,我仍然会收到此错误。

Eri*_*ric 5

我遇到了这个问题,这是因为我正在使用我刚刚删除的数据库在模型中的某个位置初始化默认值。简而言之,我有类似forms.ChoiceField(choices=get_some_data(),...)使用get_some_data()数据库检索一些默认值的内容。

我希望你已经发布了回溯,因为在我的例子中,通过查看get_some_data()使用 orm 的回溯(使用类似的东西somemodel.objetcs.filter(...)),它是非常明显的。


sha*_*ker 4

不知何故,Django 认为您已经创建了该表并且现在正在尝试修改它,而实际上您已经从外部删除了该表并重新开始。migrations如果是这种情况,请删除属于您的应用程序的文件夹中的所有文件,然后重新开始./manage.py makemigrations