提问人:M H R 提问时间:7/16/2023 最后编辑:M H R 更新时间:7/29/2023 访问量:69
将 pg_service.conf 文件与 Django 和 PostgreSQL 一起使用时出现“未找到服务定义”错误
"Definition of service not found" error when using pg_service.conf file with Django and PostgreSQL
问:
我正在尝试使用 pg_service.conf 文件来管理 Django 应用程序中的数据库连接,但是在尝试使用命名服务连接到数据库时遇到错误。
这是我在 Django 中的 DATABASES 设置的样子:
python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'OPTIONS': {
'service': 'my_service'
}
}
}
这是我的 pg_service.conf 文件的样子(位于 /etc/postgresql-common/pg_service.conf):
ini
[my_service]
host=localhost
port=5432
user=my_user
password=my_password
dbname=my_database
但是,当我尝试运行我的 Django 应用程序时,我收到以下错误:
psycopg2.OperationalError: service file "/etc/postgresql-common/pg_service.conf" not found
The above exception was the direct cause of the following exception:
django.db.utils.OperationalError: definition of service "my_service" not found
我已检查 pg_service.conf 文件是否存在于正确的位置并具有正确的权限,并且还验证了我的 DATABASES 设置中的服务名称是否与 pg_service.conf 中的服务名称匹配。还有什么原因可能导致此错误?
任何帮助将不胜感激!
我尝试过的:
- 已验证文件是否存在于 中并具有正确的权限(由具有权限的用户拥有)。
pg_service.conf
/etc/postgresql-common/
postgres
0640
- 已验证我的设置中的服务名称是否与 中的服务名称匹配。
DATABASES
pg_service.conf
- 在对 进行更改后重新启动了我的 Django 应用程序。
pg_service.conf
- 确认我可以使用常规 PostgreSQL 连接字符串中的相同连接参数连接到数据库(不使用 )。
pg_service.conf
- 使用 systemctl restart postgresql 重新启动 PostgreSQL 服务。
我所期待的:
- 能够使用我的 Django 应用程序中定义的命名服务连接到我的 PostgreSQL 数据库。
my_service
pg_service.conf
- 在运行我的 Django 应用程序时没有收到“未找到服务定义”错误。
答:
0赞
M H R
7/23/2023
#1
该问题与文件的文件权限有关。我通过运行以下命令更新了文件权限:pg_service.conf
sudo chmod 0640 /etc/postgresql-common/pg_service.conf
这会将文件权限设置为由用户拥有并具有权限。postgres
0640
有关在 Linux 中管理文件权限的更多信息,可以参考以下资源:
- Linux 中的 chmod 命令:https://www.geeksforgeeks.org/chmod-command-linux/ ↗
- 了解 Linux 文件权限:https://www.linux.com/training-tutorials/understanding-linux-file-permissions/ ↗”
评论