0

更新

在调试模式下短暂运行应用程序...保存时它给了我以下信息:

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 服务器错误故障。

我有以下models.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', 'permission'),)

在我的 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

数据库中每个表的标准都差不多。

4

1 回答 1

0

好吧,毕竟考虑到......我相信......

如果由于 PostgreSQL、Django 和 cpanel 版本之间的冲突而出现某种类似的故障...您可以添加默认权限并使用数据库本身中的 sql 查询将用户分配到组...

您可以执行 sql 脚本,如果不是更快的话,它不会比通过网站的管理端慢...

如果有其他想法,请告诉我...

谢谢

于 2020-11-12T13:59:17.533 回答