You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Django-Simple-SSO遇报错:relation 'sso_server_consumer'不存在求助

解决Django-Simple-SSO部署中的两个问题

问题1:执行数据库操作时提示sso_server_consumer表不存在

你遇到的psycopg2.errors.UndefinedTable错误,核心是数据库里实际没创建出对应的sso_server_consumer表,即便执行了makemigrations和migrate也没生效。给你几个具体的排查和解决方向:

1. 单独对sso_server应用执行迁移

默认的migrate命令会处理所有INSTALLED_APPS里的应用,但偶尔第三方应用的迁移会因为缓存或优先级问题没被正确执行。你可以尝试明确指定迁移目标:

python manage.py migrate sso_server

执行完再进入Django Shell,重新运行创建Consumer的代码,看看问题是否解决。

2. 确认数据库连接与实际表结构

  • 打开项目的settings.py,检查DATABASES配置,确保指向的是你当前正在使用的数据库(避免误连到测试/其他环境的数据库)。
  • 直接登录PostgreSQL数据库,执行以下SQL查询,确认sso_server_consumer表是否真的存在:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';

如果查不到这个表,说明迁移完全没生效,继续下一步排查。

3. 重新生成并应用迁移文件

如果迁移文件存在损坏或未正确生成,可尝试以下步骤(仅建议在开发环境操作):

  1. 找到simple_sso包下的migrations目录(一般在虚拟环境的site-packages里),删除除__init__.py外的所有文件;如果是项目中自己创建的迁移,只清理sso_server相关的文件。
  2. 重新生成sso_server的迁移文件:
python manage.py makemigrations sso_server
  1. 再次执行迁移:
python manage.py migrate sso_server

4. 检查INSTALLED_APPS配置

确认settings.py的INSTALLED_APPS里已经正确添加了sso_server:

INSTALLED_APPS = [
    # ...其他应用
    'simple_sso.sso_server',
]

如果之前没添加,补上后再执行迁移命令。


问题2:代码中导入了Token但教程未使用

你注意到的Token导入未被教程使用,原因很直接:
Token是Django-Simple-SSO内部用于处理SSO认证流程的核心模型——当客户端应用发起认证请求时,服务端会生成一条Token记录来跟踪请求状态(比如临时凭证、过期时间等)。而教程的步骤3只是创建消费者(Consumer)(即客户端应用的身份凭证),这个过程不需要操作Token,所以导入了但没用到。

这大概率是教程作者的小疏忽(比如习惯导入相关模型,或者旧版本需要用到但当前版本不需要了),你完全可以删掉Token的导入语句,不会影响当前的Consumer创建操作。


内容的提问来源于stack exchange,提问作者Sai Krishna Vadali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 13:38:00