关于 PostgreSQL 与 Django 和 CPanel

About PostgreSQL with Django and CPanel

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

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

对我的数据库 tables 进行更改

我 运行 以下命令: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...

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

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

我查看了项目文件夹中的 manage.py,发现不知何故它是空的,尽管我的 PostgreSQL 中有 tables,但它与 Django 联系并在站点上正常运行。 .. 所以我肯定需要 post 我的 table 到文件中。(?)

我想安装 Django 支持的 PostgreSQL,但是我的主机回复说 CPanel 支持的最高版本的 PostgreSQL 确实是 9.2.24...并且一旦我安装了更高版本的PosgreSQL,我将无法为我的数据库使用 CPanel...

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

我没有看到任何关于 PostgreSQL、CPanel 和 Django 之间的冲突的信息...这可能会帮助某些人获得这些程序之间存在冲突的信息,直到,我猜,他们更新到互相支持......现在我在不同的资源上看到一些post,其中讨论了 CPanel 不支持 PostgreSQL 9......但仍然不明白如何处理这个......我看到的来源,好像是同事之间用自己的资源聊的,public.

没有

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

不久之后,如果您使用 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 从来没有问题 运行ning 服务器和数据库.

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

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

如果我的想法有什么不对的地方,请告诉我。

谢谢。

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