Django说该表不存在

时间:2016-03-07 16:22:11

标签: python mysql django django-models

我是Django的新手,我正在使用mysql DB的项目中工作。 他们将数据库导入Django模型,似乎它没有丢失任何东西。但是,当我使用Django进行查询时,它表示缺少一个表。我检查了数据库中的表名,它是匹配的。很奇怪。无论如何,我通过使用语法" .using(' db_config')。值(' column1',' column2')"解决了这个问题。

该模型如下:

class UserRoles(models.Model):
    role_id = models.AutoField(primary_key=True)
    class Meta:
        managed = False
        db_table = 'user_roles'

给出错误的命令:

UserRoles.objects.filter(role_id=number)

该命令没有抛出错误:

r = UserRoles.objects.using('db_config').values('role_id')
q = r.filter(role_id=number)

错误如下:

django.db.utils.OperationalError: no such table: user_roles

我的问题是为什么Django以前找不到这张桌子?为什么我需要使用方法"值"找到行??我检查了所有字段都匹配。我还在

之前运行了makemigrations,syncdb PS:另一件奇怪的事情就是metatag" unique_together"也没有工作。我不得不使用方法"值"使查询也工作。我不知道它是否以某种方式相关。

2 个答案:

答案 0 :(得分:2)

这与values无关,您在第二个查询中使用using方法,该方法用于告诉django您要查询哪个数据库。

此后,您正在查找已应用相关迁移的单独数据库

答案 1 :(得分:0)

对于其他在Google上找到它的人来说,我遇到的问题导致了相同的错误(事实证明这不是OP的问题)是我有一个将模型分配给不同主机的路由器用于读取和写入,并且写入主机位于防火墙后面,因此如果您发现Django在说该表确实存在时说该表不存在,那将是另一回事。