所有人。
我正在尝试在Django项目上配置postgresql,我遵循了this website上的教程,但是在尝试进行迁移时遇到了错误。
FATAL:如下所示,数据库“ laudosOnline”不存在:
(venv) saudebelem@saudebelem-development:~/projeto/laudosOnline$ python3 manage.py makemigrations
/home/saudebelem/projeto/venv/lib/python3.6/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use "pip install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.
""")
Traceback (most recent call last):
File "/home/saudebelem/projeto/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
self.connect()
File "/home/saudebelem/projeto/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 194, in connect
self.connection = self.get_new_connection(conn_params)
File "/home/saudebelem/projeto/venv/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 178, in get_new_connection
connection = Database.connect(**conn_params)
File "/home/saudebelem/projeto/venv/lib/python3.6/site-packages/psycopg2/__init__.py", line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: FATAL: database "laudosOnline" does not exist
这是我在settings.py上的数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ.get('DB_NAME', 'laudosOnline'),
'USER': os.environ.get('DB_USER', 'edson'),
'PASSWORD': os.environ.get('DB_PASS', 'mypassword'),
'HOST': 'localhost',
'PORT': '5432',
}
}
现在,尴尬的部分:
我确定我已经创建了laudosOnline数据库,所以我去了psql并尝试再次创建该数据库,令我惊讶的是,我得到了一条消息:错误:数据库“ laudosonline”已经存在,如下所示:
postgres=# CREATE DATABASE laudosOnline WITH OWNER edson;
ERROR: database "laudosonline" already exists
这是当意识到一件事情时:postgres不区分大小写,而当我尝试使用大写字母创建数据库时,例如我的“ laudosOnline”,它创建了一个名为“ laudosonline”的数据库,而没有大写字母。
在订单方面,python本身是区分大小写的,所以我要做的就是返回我的settings.py并将我的数据库名称重命名为其无大写字母的版本:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ.get('DB_NAME', 'laudosonline'),
'USER': os.environ.get('DB_USER', 'edson'),
'PASSWORD': os.environ.get('DB_PASS', 'mypassword'),
'HOST': 'localhost',
'PORT': '5432',
}
}
瞧,它解决了!
我知道这是一个愚蠢的错误,但是我花了大约1个小时来尝试解决这个问题,但我在互联网上找不到解决方案。因此,我希望它对将来可能会遇到此问题的其他人有所帮助。
谢谢。