2

我已经有一个使用 sqlite3 的正常运行的网站,但我更喜欢用一个立即使用 PostgreSQL/PostGIS 的空项目来重新启动我的网站项目。在配置结束时,settings.py我将进行转储以将所有 sqlite3 表上传到新数据库中。旧项目的任何模型都不会修改到这个新项目中。新旧项目之间的区别仅在于 DBMS。

这是settings.py

INSTALLED_APPS = [
...
'django.contrib.gis',
]
...
DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'my_project_name',
        'USER': 'db_user',
        'PASSWORD': 'password_of_db_user',
    }
}

在此之后,我尝试使用它来测试服务器,python3 manage.py runserver但我看到了以下错误消息:

django.db.utils.OperationalError: FATAL: Peer authentication failed for user "db_user"

我确定NAMEUSERPASSWORD是正确的,数据库在 localhost 中。几周前,我创建了另一个简单的项目,以使用相同的设置学习 GeoDjango,并且该网站运行良好。

4

1 回答 1

3

看起来您缺少host配置中的字段:

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'my_project_name',
        'USER': 'db_user',
        'PASSWORD': 'password_of_db_user',
        'HOST': 'localhost' # missing part
    }
}
于 2019-08-07T08:51:19.633 回答