【问题标题】:psycopg2.errors.UndefinedTable: relation "sso_server_consumer" does not existpsycopg2.errors.UndefinedTable:关系“sso_server_consumer”不存在
【发布时间】:2020-10-09 13:56:59
【问题描述】:

我正在努力将 Django-Simple-SSO 实施到我们基于 python 的平台上。我正在关注这个博客来实现 SSO:

https://medium.com/@MicroPyramid/django-single-sign-on-sso-to-multiple-applications-64637da015f4

这段代码是django-simple-sso服务端的第3步。

    from simple_sso.sso_server.models import Token, Consumer

    Consumer.objects.create(public_key='your_application_public_key', private_key='your_application_private_key', name='your_application_name')

psycopg2.errors.UndefinedTable: 关系“sso_server_consumer”不存在——这是我在 django shell 中运行上述代码时遇到的错误。有人可以帮我解决这个错误吗?

我已经运行了makemigrationsmigrate 命令。但是,仍然得到同样的错误。

我可以在 django-admin 页面的标题 SSO_SERVER 下看到 Consumers 表。但是,当我点击那个Consumers 表时,我得到了这个错误页面:

ProgrammingError at /admin/sso_server/consumer/
relation "sso_server_consumer" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "sso_server_consumer"

还有为什么要导入Token?因为该 sso 博客文章中的任何地方都没有使用它。

谢谢

【问题讨论】:

  • 你跑python manage.py makemigrationspython manage.py migrate了吗?
  • 是的,我运行了这两个命令..
  • psql\d 是否显示表格?或者它的名称是否不同,例如不同的外壳?
  • @AdrianKlaver 有没有办法检查我的 django 平台正在使用哪个数据库?我是 Django 的新手。现在我只知道显示表格的管理页面。我不知道如何在我的 dango 平台上使用这个 psql 命令。而且我也不确定我的平台是否在使用 postgreSQL。
  • 您需要在项目中找到设置文件并查看DATABASES 的设置。 psql 是一个 Postgres 客户端,它是 Postgres 自带的。

标签: python django single-sign-on psycopg2


【解决方案1】:

同样的事情也发生在我身上。我的错误是在集成 postgreSQL 后我没有运行迁移。设置好 postgreSQL 数据库后,运行以下两个命令:

python manage.py makemigrations
python manage.py migrate

对模型进行更改后,您想再次运行这两个命令:

python manage.py makemigrations
python manage.py migrate --run-syncdb

它对我有用,希望它对你有用。

一切顺利!!!

【讨论】:

    【解决方案2】:

    此错误表示数据库中不存在 Django-Simple-SSO 所需的表。

    如果您已将打包添加到您的环境并安装了应用程序,这很可能是因为您尚未进行和应用迁移。执行以下操作:

    python manage.py makemigrations

    python manage.py migrate

    那么当程序去寻找它们时,这些表就会存在。

    【讨论】:

    • 是的,我运行了这两个命令。但仍然遇到同样的错误
    • 它在您安装的应用程序中吗?你能看到你的数据库,看看表是否被制作了吗?我敢打赌,您的迁移会出现问题。如果您使用 Heroku,请记住您必须在本地进行迁移,将迁移提交到 git,然后在服务器上迁移。
    • 是的,海登。我可以在标题SSO_SERVER 下的管理页面中看到Consumers 表。但是,当我点击它时,ProgrammingError at /admin/sso_server/consumer/。我在上面的问题中添加了这个完整的错误。谢谢
    • @saikrishna 这样您就可以在管理页面中看到它,但是您真的可以看到数据库中的表吗?我仍然相信这是因为表 sso_server_consumer 实际上并不存在于您的数据库中。
    • 我确信这个表没有正确创建。除了从 django 提供的管理页面之外,有没有办法从终端/GUI 检查我的 django 平台的数据库表?
    猜你喜欢
    • 2020-03-06
    • 2022-01-26
    • 2021-07-30
    • 2019-10-14
    • 2021-07-22
    • 2022-07-20
    • 2019-11-17
    • 2018-05-23
    • 2021-09-16
    相关资源
    最近更新 更多