Django REST Framework报错relation "stock_stocks"不存在如何解决?
报错原因与解决方案
核心原因
这个ProgrammingError: relation "stock_stocks" does not exist报错是因为PostgreSQL数据库中没有生成你的Stocks模型对应的数据库表,Django的模型定义没有同步到数据库中导致的。
解决步骤
- 第一步:确认应用已注册
打开portfolio/settings.py,检查INSTALLED_APPS列表中已添加以下两项:
未注册的应用不会被Django的迁移工具扫描,也就不会生成对应表。INSTALLED_APPS = [ # 其他默认应用 'rest_framework', 'stock', ] - 第二步:生成迁移文件
在项目根目录下执行命令,生成stock应用的模型迁移文件:
执行完成后检查python manage.py makemigrations stockstock/migrations目录下是否生成了0001_initial.py开头的迁移文件。 - 第三步:执行迁移同步到数据库
执行以下命令将迁移文件的表结构同步到PostgreSQL数据库:
执行完成后即可在数据库中看到生成的python manage.py migrate stockstock_stocks表,报错即可解决。
异常场景处理
如果执行上述步骤后仍报错,可按以下情况排查:
- 若你之前手动删除过迁移文件,需要先进入PostgreSQL数据库,删除
django_migrations表中所有app字段为stock的记录,再重新执行上述第二步、第三步命令。 - 确认
settings.py中的PostgreSQL连接配置正确,没有连接到其他空库。 - 确认你没有在Stocks模型的Meta类中自定义
db_table参数,若自定义了该参数需要保证表名和报错中的表名匹配。
内容的提问来源于stack exchange,提问作者Awesome
相关产品推荐
相关产品推荐

