问题描述
更新
简短地以调试模式运行应用程序...保存后,它给了我以下内容:
ProgrammingError at /admin/auth/user/4/change/
syntax error at or near "ON"
LINE 1: ...ser_groups" ("user_id","group_id") VALUES (4,5) ON CONFLIC...
查找了相关的故障,并且肯定是将PostgreSQL从9.2更新到最新版本的问题...
更新
为什么我无法找到如何将用户分配给组,如何从终端为用户/组分配默认权限?从逻辑上讲,这将是解决该问题的一种方法……并非完美,但至少是一些解决方案?
好吧,我想我可以通过sql查询在数据库本身中做到这一点...
如果我尝试将用户分配给组或向组或用户分配权限,则会出现500个服务器错误错误。
我有以下model.py,它位于: / home / e / sc_project / sc 它是自动生成的,它告诉我数据库中每个表的以下消息:
This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
# * Rearrange models' order
# * Make sure each model has one field with primary_key=True
# * Make sure each ForeignKey and OneToOneField has `on_delete` set to the desired behavior
# * Remove `managed = False` lines if you wish to allow Django to create,modify,and delete the table
# Feel free to rename the models,but don't rename db_table values or field names.
from django.db import models
# 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...
^
# Unable to inspect table 'auth_group_permissions'
# The error was: syntax error at or near "WITH ORDINALITY"
LINE 6: FROM unnest(c.conkey) WITH ORDINALITY co...
^
,依此类推... 那是因为我有9.2 PostgreSQL数据库(?)...它可以给我权限问题吗?如果可以,是否可以解决?我无法更新到更高版本的PostgreSQL,因为c-panel不支持更高版本,这意味着我将只能使用psql来访问数据,这不像通过c-panel那样好。
该系统在本地服务器(PostgreSQL 12)上运行良好,但是在由nginx + gunicorn运行的基于远程centos 7的服务器上运行失败。
是否可能需要打开gunicorn的权限文件夹?我没有看到任何明确的答案。对于gunicorn本身有权限的答案,但对于文件夹权限没有答案。到目前为止,基于对静态文件或媒体文件的相同方法,这只是我的大胆猜测。但这确实不会给我有关journalctl -u gunicorn命令的任何错误消息。
除此之外...我检查了我的models.py,它与PostgreSQL数据库完全相关。按照Django手册,我不必创建标准权限,例如创建,删除,查看它们是由django.contrib.auth处理的。
在settings.py中,我在INSTALLED_APPS中具有“ django.contrib.auth”。据我了解,它应该自动处理用户,组,权限之间的多对多关系。
我有Django版本3.1.1,所以它是最新的。所以这应该没问题。
还有什么呢?
所有用户和组在创建,删除...方面均未给我任何错误。所有模型均已导入。这是我的models.py文件:
class AuthGroup(models.Model):
name = models.CharField(unique=True,max_length=150)
class Meta:
managed = False
db_table = 'auth_group'
class AuthGroupPermissions(models.Model):
group = models.ForeignKey(AuthGroup,models.DO_NOTHING)
permission = models.ForeignKey('AuthPermission',models.DO_NOTHING)
class Meta:
managed = False
db_table = 'auth_group_permissions'
unique_together = (('group','permission'),)
class AuthPermission(models.Model):
name = models.CharField(max_length=255)
content_type = models.ForeignKey('DjangoContentType',models.DO_NOTHING)
codename = models.CharField(max_length=100)
class Meta:
managed = False
db_table = 'auth_permission'
unique_together = (('content_type','codename'),)
class AuthUser(models.Model):
password = models.CharField(max_length=128)
last_login = models.DateTimeField(blank=True,null=True)
is_superuser = models.BooleanField()
username = models.CharField(unique=True,max_length=150)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=150)
email = models.CharField(max_length=254)
is_staff = models.BooleanField()
is_active = models.BooleanField()
date_joined = models.DateTimeField()
class Meta:
managed = False
db_table = 'auth_user'
class AuthUserGroups(models.Model):
user = models.ForeignKey(AuthUser,models.DO_NOTHING)
group = models.ForeignKey(AuthGroup,models.DO_NOTHING)
class Meta:
managed = False
db_table = 'auth_user_groups'
unique_together = (('user','group'),)
class AuthUserUserPermissions(models.Model):
user = models.ForeignKey(AuthUser,models.DO_NOTHING)
permission = models.ForeignKey(AuthPermission,models.DO_NOTHING)
class Meta:
managed = False
db_table = 'auth_user_user_permissions'
unique_together = (('user',)
在我的admin.py中,我没有上面的任何表格,但是据我了解,创建项目时它们已经自动处理。
我的PostreSQL数据库如下所示: 每个表都有:
--Columns
---list of columns
--Browse
---!Error Loading display.php&subject=table&server=...Allow&database=sc_sc&schema=public&action=tree&table=auth_group(200:OK)
--Indexes
---gives me indexes of PKs and unique keys
--Constraints
---gives me constraints
--Triggers
---No objects found (I didn't use triggers)
--Rules
---No objects found (Same)
--Admin
--Info
--Privileges
--Import
--Export
数据库中的每个表都非常标准。
解决方法
好吧,经过所有考虑,我相信...
如果由于PostgreSQL,Django和cpanel版本之间的冲突而导致某种类似的错误...您可以添加默认权限,并使用数据库本身中的sql查询将用户分配给组...
您可以执行sql脚本,如果不更快的话,它不会比通过网站的管理员端慢。
如果还有其他想法,请告诉我...
谢谢