在生产服务器上的Django数据库设置
在生产服务器上的Django数据库设置
我在使用Django数据库配置时遇到了问题,配置的数据库是'postgresql_psycopg2'。
如果我给我的数据库任意起一个名字,就像下面这样:
DATABASES = { 'default': { 'ENGINE': 'postgresql_psycopg2', 'NAME': 'xyz', 'USER': 'postgres', 'PASSWORD': '${my_password}', 'HOST': '', 'PORT': '', 'OPTIONS': { "autocommit": True, } } }
我遇到了以下错误:
OperationalError at /
FATAL: database "xyz" does not exist
我查了很多资料,发现和SQLite一样,我们必须指定数据库的绝对路径;与之类似,对于PostGRE也是如此。
我想知道:
1)为什么我在上述配置中会得到错误消息?
2)我如何在文件系统(Windows)中使用我正在开发服务器布局所使用的数据库?
问题出现的原因是在使用PostGreSQL时,需要指定数据库的名称,而不是绝对路径。解决方法是通过在dbshell中输入命令来创建数据库,然后再次运行syncdb命令。
具体解决方法如下:
1. 进入dbshell(python manage.py dbshell
),输入命令\l
查看数据库列表。如果数据库xyz
不存在,输入命令create database xyz
创建该数据库,然后退出postgres shell,再次运行syncdb命令。
2. 对于开发服务器,建议使用sqlite3数据库,因为它易于使用。只需将ENGINE
设置为sqlite3
,指定保存数据库的绝对路径,然后运行python manage.py syncdb
命令。
具体解决方法如上所述,应该可以解决问题。