操作错误:致命:数据库不存在

人气:867 发布:2022-10-16 标签: database django postgresql psycopg2

问题描述

我是一个db哑巴,我正在尝试为我的Django项目设置PostgreSQL。为此,我还使用了心理拷贝2。不过,数据库很复杂。就我个人而言,我希望有一种方法可以在一个地方获得我所有的数据库和用户设置/信息。因此,我知道连接到什么以及如何连接(我仍在本地运行,所以没有安全问题?)。

但是,即使我连接到标准的"admin"用户"postgres",我似乎也没有创建此数据库的"权限"。使用我在安装时输入的密码("pw123")。

django-project(settings.py):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django',                      
        'USER': 'postgres',
        'PASSWORD': 'pw123',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

cmd->python made.py外壳(导入django.db连接后)

>>> cursor = connection.cursor()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:Python27libsite-packagesdjangodbackends\__init__.py", line 165, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "C:Python27libsite-packagesdjangodbackends\__init__.py", line 138, in _cursor
    self.ensure_connection()
  File "C:Python27libsite-packagesdjangodbackends\__init__.py", line 133, in ensure_connection
    self.connect()
  File "C:Python27libsite-packagesdjangodbutils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:Python27libsite-packagesdjangodbackends\__init__.py", line 133, in ensure_connection
    self.connect()
  File "C:Python27libsite-packagesdjangodbackends\__init__.py", line 122, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:Python27libsite-packagesdjangodbackendspostgresql_psycopg2ase.py", line 134, in get_new_connection
    return Database.connect(**conn_params)
  File "C:Python27libsite-packagespsycopg2-2.5.4-py2.7-win32.eggpsycopg2\__init__.py", line 164, in connect
    conn = _connect(dsn, connection_factory=connection_factory, async=async)
OperationalError: FATAL:  database "django" does not exist

我是不是在安装中做错了什么?我能改正吗?我应该考虑重新安装所有东西吗?我该怎么做呢?数据库把我搞糊涂了:p

推荐答案

不会在第一次连接时自动创建数据库。您必须先创建数据库,然后才能使用它。

通过PgAdmin-III或命令行psql客户端连接到PostgreSQL(通常连接到管理数据库,名为‘postgres’),并创建数据库django。在PgAdmin-III中,您可以通过菜单执行此操作;在psql中,您可以使用the CREATE DATABASE SQL command。

另请参阅手册中的Creating a PostgreSQL database和this tutorial我在谷歌上搜索了5秒钟后发现看起来并不完全错误。

我要做的是使用psql(您可以在[开始]菜单中找到它)作为‘postgres’用户连接,使用您在安装时设置的密码,然后:

CREATE USER django WITH PASSWORD 'somepassword';

CREATE DATABASE django WITH OWNER django ENCODING 'utf-8';

986