关于带有Django和CPanel的PostgreSQL

关于带有Django和CPanel的PostgreSQL,django,postgresql,cpanel,Django,Postgresql,Cpanel,Django不支持早期版本的PostgreSQL,但CPanel不支持后期版本的PostgreSQL,运行inspectdb会出错。不知何故,最终被删除的模型。py 我在服务器上安装了Django(版本3.1.1),服务器上安装了Centos 7,带有CPanel和基于PostgreSQL的数据库(版本9.2.24)。我对这个设置非常满意,直到最近我还试图通过python models.py对数据库表进行更改 我运行了以下命令:python manage.py inspectdb。。。所以我知道

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

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

我运行了以下命令:python manage.py inspectdb。。。所以我知道我必须在模型中进行哪些更改。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。。。但仍然不知道如何处理这件事。。。我看到的消息来源,似乎是同事之间用他们自己的资源进行的谈话,这是不公开的


处理这种情况的最佳方法是什么?

如果您在CPanel中使用Django 3.1.1、PostgreSQL 9.2.24,并且您无法升级PostgreSQL,因为您将无法从CPanel管理数据库,因为它不支持更高版本的PostgreSQL。不要在服务器上运行inspectdb。。。在其他环境(Windows环境或Centos with GUI)中运行此命令,相应地更改models.py,然后在服务器上更改此models.py。希望它能帮上忙,你就不需要像我刚才那样在你搞砸了你的模型后运行一些有问题的副本了。如果有一些相反的意见,我没有考虑到一些东西,请让我和其他人知道

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

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

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

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

如果我的想法有什么错误,请告诉我

多谢各位


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

我尝试使用命令,如:python manage.py inspectdb>models.py,但取得了一些成功。Django告诉我,它导入了所有的表,除了它不能做一个之外,并且在这一点上卡住了。。。表的名称是company。我知道它在数据库里,我没有改变它,它是工作台。导入的过程应该与其他表相同……不知何故,这个inspectdb命令删除了我的models.py文件?怎么可能呢?我试图启动我的gunicorn.service,它抱怨说:from.models进口公司,。。。gunicorn[5014]:导入错误:无法导入名称“Company”确定。我想现在,我将通过Cpanel postresql admin备份整个数据库(数据库的方案)。。。并使用此文件重新创建my models.py。。。我要做的任何更新,我都是这样做的。。。使用备份功能而不是inspectdb,它似乎删除了我的models.py文件…嗯。。。我导出整个数据库、表或任何表。。。它只是显示空文件。。。既然这样做了,我只需复制我的旧备份并修改它,使其尽可能接近当前数据库。。。真是个陷阱:(谢谢你的编辑。我以后会尝试问一些更干净的问题。我看到了一些反对票的讨论。看到了一些赞成和反对的论点。我只想说:我们都在这里学习,我们都在做项目,工作和赚钱,我怀疑有人什么都知道,如果有人说他什么都知道,那就太傲慢了……如果我们知道的话作为一个社区,我们不接受那些什么都不知道的人,我们在这里做什么,一个