2

我正在运行Django==1.7psycopg2==2.5.4但我无法运行我的任何测试。

当我尝试运行我的任何 django 测试用例(通过运行./manage test <app>)时,我收到以下错误:

Creating test database for alias 'default'...
Got an error creating the test database: CREATE DATABASE cannot run inside a transaction block
...
Destroying old test database 'default'...
Got an error recreating the test database: current transaction is aborted, commands ignored until end of transaction block

我的数据库设置非常基本:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb',
    }
}

我正在使用的用户(系统是 Ubuntu 14.04)具有完整的 postgres 管理员权限,我可以成功地手动创建/删除数据库:

(env)user@host:~$ createdb test_mydb
(env)user@host:~$ dropdb test_mydb
(env)user@host:~$ 

我的模型迁移似乎很好 - 我可以删除数据库,成功运行迁移并且我的 Web 应用程序功能正常 - 我只是无法运行测试。

我在同一台机器上有另一个 django 1.7 项目,使用相同的基本 postgres 数据库设置,以相同的用户身份运行并且测试运行良好。

任何想法可能会阻止测试运行?

4

1 回答 1

0

这是由我的项目引起的,包括 djorm-ext-pool应用程序。从 INSTALLED_APPS 中删除djorm_pool可解决该问题。

应用程序必须在 django 测试运行程序创建测试数据库之前启动事务。

于 2014-09-28T03:33:56.977 回答