操作错误:致命:数据库“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 上运行,这还可能吗? @howtopythonplssudo
的使用是 unix/linux 特有的,指的是 PostgreSQL 在 Linux 上使用的默认身份验证模式。在 Windows 上,它默认使用密码身份验证,因此您不需要也不能使用“sudo”或其 Windows 等效项“runas”。【参考方案3】:
您需要做的就是在您的 postgresql 中创建名为 django 的数据库。 默认情况下,用户 postgres 将拥有数据库 django 的权限,密码将是用户 postgres 的密码。
【讨论】:
【参考方案4】:这里的 'NAME' 表示用户名,默认为 'postgres' 。所以 'NAME' 应该是用户名而不是数据库名称。试试这个,它的作品
【讨论】:
以上是关于操作错误:致命:数据库“django”不存在的主要内容,如果未能解决你的问题,请参考以下文章
django.db.utils.OperationalError:致命:角色“django”不存在
Rails - 致命:数据库“myapp_development”不存在
致命错误:未捕获的 ReflectionException:类配置不存在