Django测试:创建测试数据库时出错:数据库“ database_name”已存在

The*_*Mir 4 python database django postgresql

我在测试时遇到问题。这是我第一次编写测试,但我遇到了问题。

我刚刚在应用程序内部创建了一个测试文件夹userstest_urls.py用于测试url。

当我输入:

python manage.py test users

它说:

为别名“默认”创建测试数据库...创建测试数据库时出错:数据库“ database_name”已存在

如果要尝试删除测试数据库“ database_name”,请输入“ yes”,否则请输入“ no”以取消:

这是什么意思?如果输入是会怎样?我会丢失数据库中的所有数据吗?

Jac*_*din 5

在测试时,Django将创建一个要使用的测试数据库,以便您的开发数据库不会受到污染。错误消息表明Django正在尝试创建名为的测试数据库"database_name",并且该数据库已存在。您应该检查所用数据库软件的表,并检查其中的内容database_name,它可能是错误创建的。

如果键入yes,数据库database_name将被删除,并且不太可能恢复数据。因此,请先了解发生了什么。

您应该在中设置测试数据库的名称settings.py。有一个特定的TEST字典DATABASE此设置:

settings.py

...
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'USER': 'mydatabaseuser',
        'NAME': 'mydatabase',
        'TEST': {
            'NAME': 'mytestdatabase',
        },
    },
}
...
Run Code Online (Sandbox Code Playgroud)

默认情况下,前缀test_被添加到开发数据库的名称中。您应该检查一下settings.py以检查发生了什么。

文档

默认的测试数据库的名字前面加上创建test_到各自的价值NAMEDATABASES。使用SQLite时,默认情况下,测试将使用内存数据库(即,数据库将在内存中创建,完全绕开文件系统!)。将TEST在字典DATABASES提供了大量的设置来配置你的测试数据库。例如,如果要使用其他数据库名称,请在TEST字典中为中的任何给定数据库指定NAME DATABASES