当我尝试使用命令测试任何应用程序时(当我尝试使用使用此命令的结构来部署myproject时,我注意到了该应用程序):
python manage.py test appname
我收到此错误:
Creating test database for alias 'default'... Got an error creating the test database: permission denied to create database Type 'yes' if you would like to try deleting the test database 'test_finance', or 'no' to cancel
syncdb命令似乎起作用。我在settings.py中的数据库设置:
syncdb
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME': 'finance', # Or path to database file if using sqlite3. 'USER': 'django', # Not used with sqlite3. 'PASSWORD': 'mydb123', # Not used with sqlite3. 'HOST': '127.0.0.1', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '', # Set to empty string for default. Not used with sqlite3. } }
Django运行测试套件时,在您的情况下,它将创建一个新数据库test_finance。具有用户名的postgres用户django没有创建数据库的权限,因此出现错误消息。
test_finance
django
当您运行migrate或时syncdb,Django不会尝试创建finance数据库,因此不会出现任何错误。
migrate
finance
您可以通过以超级用户身份在postgres shell中运行以下命令来向django用户添加createdb权限(此堆栈溢出答案的提示)。
=> ALTER USER django CREATEDB;
注意:ALTER USER <username> CREATEDB;命令中使用的用户名需要与Django设置文件中的数据库用户匹配。在这种情况下,原始张贴者将用户作为django上述答案。
ALTER USER <username> CREATEDB;