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

Posted

技术标签:

【中文标题】操作错误:致命:数据库“django”不存在【英文标题】:Operational Error: FATAL: database "django" does not exist 【发布时间】:2014-12-09 18:52:43 【问题描述】:

我是一个 db 假人,我正在尝试为我的 django 项目设置 PostgreSQL。为此,我还使用 psycopg2。数据库虽然复杂。就个人而言,我希望有一种方法可以在一个地方获取我所有的数据库和用户设置/信息。所以我知道什么连接以及如何连接(我仍在本地运行,所以没有安全问题?)。

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

Django 项目(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 manage.py shell(导入django.db连接后)

>>> cursor = connection.cursor()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 165, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 138, in _cursor
    self.ensure_connection()
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 133, in ensure_connection
    self.connect()
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 133, in ensure_connection
    self.connect()
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 122, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Python27\lib\site-packages\django\db\backends\postgresql_psycopg2\base.py", line 134, in get_new_connection
    return Database.connect(**conn_params)
  File "C:\Python27\lib\site-packages\psycopg2-2.5.4-py2.7-win32.egg\psycopg2\__init__.py", line 164, in connect
    conn = _connect(dsn, connection_factory=connection_factory, async=async)
OperationalError: FATAL:  database "django" does not exist

我在安装过程中做错了吗?我可以纠正吗?我应该考虑重新安装所有东西吗?我该怎么办?数据库让我很困惑:P

【问题讨论】:

你必须先创建数据库。 是的,但是怎么做?此外,我想我已经读过,如果我没有,这个方法会创建一个..我不是通过这样做创建名为“django”的数据库吗,因为这就是我想要的(!?):P 【参考方案1】:

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

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

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

我要做的是以“postgres”用户身份使用psql(您可以在“开始”菜单中找到它)使用您在安装时设置的密码进行连接,然后:

CREATE USER django WITH PASSWORD 'somepassword';

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

【讨论】:

我不知道 psql 是一个命令提示符,现在我明白了所有的命令。对不起,我有 Windows 8。我会试试这个!谢谢! @howtopythonpls 它不在默认 PATH 上,因此除非您更改 PATH,否则如果直接从命令提示符中声明,您将需要类似 %PROGRAMFILES%\PostgreSQL\9.3\bin\psql 的内容。或者您可以只使用开始菜单条目。【参考方案2】:

因为不像SQLite,需要创建数据库,可以按照这个指南https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-django-with-postgres-nginx-and-gunicorn#step-seven-configure-postgresql

【讨论】:

我找到了类似的指南,但什么是“sudo”?我在 Windows 上运行,这还可能吗? @howtopythonpls sudo 的使用是 unix/linux 特有的,指的是 PostgreSQL 在 Linux 上使用的默认身份验证模式。在 Windows 上,它默认使用密码身份验证,因此您不需要也不能使用“sudo”或其 Windows 等效项“runas”。【参考方案3】:

您需要做的就是在您的 postgresql 中创建名为 django 的数据库。 默认情况下,用户 postgres 将拥有数据库 django 的权限,密码将是用户 postgres 的密码。

【讨论】:

【参考方案4】:

这里的 'NAME' 表示用户名,默认为 'postgres' 。所以 'NAME' 应该是用户名而不是数据库名称。试试这个,它的作品

【讨论】:

以上是关于操作错误:致命:数据库“django”不存在的主要内容,如果未能解决你的问题,请参考以下文章

django.db.utils.OperationalError:致命:角色“django”不存在

致命错误:GL/glfw.h:不存在这样的文件或目录

Rails - 致命:数据库“myapp_development”不存在

致命错误:未捕获的 ReflectionException:类配置不存在

如何解决这个问题以使用 psql? | psql:错误:致命:角色“postgres”不存在

关于致命错误28000: 角色 “Administrator“ 不存在的问题解决