首页 > 解决方案 > 关于 PostgreSQL 与 Django 和 CPanel

问题描述

Django 不支持早期版本的 PostgreSQL,但是 CPanel 不支持更新版本的 PostgreSQL,运行 inspectdb 会出错。不知何故最终被删除了models.py

我在服务器上有 Django(3.1.1 版),Centos 7 带有 CPanel 和基于 PostgreSQL(9.2.24 版)的数据库。我对这个设置非常满意,直到最近我尝试通过 python models.py 对我的数据库表进行更改。

我运行了以下命令: python manage.py inspectdb ... 所以我明白我必须在 models.py 中进行哪些更改... 这个命令给了我以下错误:

# Unable to inspect table 'auth_group'
# The error was: syntax error at or near "WITH ORDINALITY"
LINE 6:                     FROM unnest(c.conkey) WITH ORDINALITY co...

对于我数据库中的每个表。同时,我从来没有遇到过 makemigrations 或 migrate 命令的任何问题......

所以我试图查找这个故障,我发现的唯一一件事是 Django 不再支持 PostgreSQL 版本 9...

我在我的项目文件夹中查看了 manage.py 并发现它以某种方式是空的,尽管我的 PostgreSQL 中有我的表,它与 Django 联系并在网站上正常运行......所以我肯定需要将我的表发布到文件。(?)

我想安装 Django 支持的 PostgreSQL,但我的主机响应说,CPanel 支持的 PostgreSQL 的最高版本确实是 9.2.24 ......一旦我安装了更高版本的 PosgreSQL,我就不会了无法将 CPanel 用于我的数据库...

我还担心,当我更新我的 PostgeSQL 时,我将删除我的数据库,老实说,在 libreOffice excel 程序中更正 csv 文件以将它们重新加载到数据库中,然后更正这个过程的错误和误解是一件很痛苦的事情......

我没有看到有关 PostgreSQL、CPanel 和 Django 之间冲突的任何信息......它可能会帮助某人获得这些程序之间存在一些冲突的信息,直到,我猜,它们得到更新以相互支持...... .现在我在另一个资源上看到了一些帖子,其中讨论了CPanel不支持PostgreSQL 9 ...但仍然不知道如何处理这个...我看到的源代码,似乎是同事之间的谈话他们自己的资源,不向公众开放。

处理这种情况的最佳行动方案是什么?

标签: djangopostgresqlcpanel

解决方案


很快,如果您将 Django 3.1.1、PostgreSQL 9.2.24 与 CPanel 一起使用,并且您将无法升级 PostgreSQL,因为您将无法从 CPanel 管理您的数据库,因为它不支持更高版本的 PostgreSQL。不要在服务器上运行 inspectdb... 在不同的环境(Windows 环境或带有 GUI 的 Centos)中运行此命令,相应地更改您的 models.py,然后在服务器上更改此 models.py。希望它会有所帮助,并且在您像我刚刚那样拧完您的 models.py 之后,您不需要运行一些有问题的副本。如果有一些相反的意见,我没有算进去,请让我和其他人知道......

所以一般来说,从表面上看,答案很简单,当你做一个项目时,要在几个环境中做。如我所见,最好在 Windows、Linux 环境中的虚拟机上以及作为服务器上的端点版本执行。因此,如果这种情况发生在您身上,您不会受到太大影响……

好吧,我对这种情况做了什么?不知何故,我最终消灭了 models.py 文件。我检查了一下,发生了这种情况,不是因为inspectdb,但我不知道如何。如果inspectdb 命令能够删除models.py 文件会很奇怪......但它不可能是空的,因为我的gunicorn.service 在运行服务器和数据库时从来没有遇到过问题。

我不得不在 windows 中复制 models.py 文件...如果你查看 models.py 文件,Python 只从数据库中获取最少需要的信息,所有其余的内部工作都留给数据库本身。所以我只是将models.py文件的内容复制到我的服务器文件中,gunicorn.service不再抱怨了。

我不喜欢 Windows 和 Linux 环境中的索引的一件事变得相同,但我看不到它们将如何从一个环境复制到另一个环境...models.py 文件不包含此类信息本身...

如果我的想法有误,请告诉我。

谢谢你。

更新:我最终使用了没有 cpanel 的 PostgreSQL 的最新版本,使用 psql 进行所有管理......


推荐阅读