django指定的数据库表与指定的不同

lf5gs5x2  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(125)

在我的django模型中,我指定了我想与类一起使用的db表

class Meta: 
        db_table = 'users'

字符串
然而,我得到的错误

django.db.utils.ProgrammingError: (1146, "Table 'db.users' doesn't exist")


为什么django在尝试查找表名时会在表名之前添加数据库名?
我看了移民档案

options={
    'users',
},


指定

zkure5ic

zkure5ic1#

可能是数据库的状态与迁移描述的状态不同。您可以尝试解决以下问题:
(django migrate参考文档)

重置迁移

1.撤消所有迁移:python manage.py migrate [app_label] zero
1.再次运行迁移:python manage.py migrate
这将首先删除应用迁移创建的所有表,然后重新创建这些表。**请记住,您将丢失这些表中包含的所有数据。**如果迁移引用的表在数据库中不存在(这里似乎是这种情况),则撤消迁移将失败。

从头开始

1.删除数据库
1.重新创建数据库
1.再次运行迁移
这是一种核心方法,但它可靠地解决了大多数迁移问题。**显然,这也会破坏您的数据。**有用的链接:django dbshell命令,django关于MySql和drop database on mysql docs的说明。

自行创建表

您可以自己使用SQL添加缺少的表。
但我不建议。让Django通过迁移来管理数据库。只有在你知道自己在做什么的情况下才能弄乱数据库。

相关问题