我尝试使用pg_service.conf文件来管理Django应用程序中的数据库连接,但在尝试使用命名服务连接到数据库时遇到错误。
以下是我在Django中的数据库设置:
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文件是否存在于正确的位置并具有正确的权限,还验证了我的DATABASE设置中的服务名称与pg_service. conf中的服务名称匹配。还有什么可能导致此错误?
如有任何帮助,将不胜感激!
我尝试过的:
- 已验证
pg_service.conf
文件是否存在于/etc/postgresql-common/
中,并且具有正确的权限(由具有0640
权限的postgres
用户拥有)。 - 已验证我的
DATABASES
设置中的服务名称是否与pg_service.conf
中的服务名称匹配。 - 在对
pg_service.conf
进行更改后重新启动了我的Django应用程序。 - 确认我可以使用常规PostgreSQL连接字符串中的相同连接参数连接到数据库(不使用
pg_service.conf
)。 - 已使用systemctl restart postgresql重新启动PostgreSQL服务。
我期待的是:
- 为了能够从我的Django应用程序中使用
pg_service.conf
中定义的命名服务my_service
连接到我的PostgreSQL数据库。 - 在运行Django应用程序时没有收到“definition of service not found”错误。
1条答案
按热度按时间axkjgtzd1#
此问题与
pg_service.conf
文件的文件权限有关。我通过运行以下命令更新了文件权限:字符串
这将文件权限设置为由
postgres
用户拥有,并具有0640
权限。有关在Linux中管理文件权限的详细信息,您可以参考以下资源: