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

时间:2019-04-15 08:37:14

标签: python django database postgresql

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

我刚刚在应用userstest_urls.py内创建了一个测试文件夹,用于测试网址。

当我键入:

python manage.py test users

它说:

  

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

     

如果您想尝试删除测试数据库,请输入“是”   'database_name'或'no'取消:

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

1 个答案:

答案 0 :(得分:3)

在测试时,Django创建一个可继续使用的测试数据库,以便您的开发数据库不会受到污染。错误消息表明Django正在尝试创建名为 echo "<td>";?> <img src="<?php echo $row["image"]; ?>" height = "100" width = "100" border="1"> <?php echo "</td>"; //row에 값넣는 것 echo "<td>" . $row['bookName'] . "</td>"; echo "<td>" . $row['publisher'] . "</td>"; echo "<td>" . $row['writer'] . "</td>"; echo "<td>" . $row['libraryowned'] . "</td>"; echo "<td>" . $row['codenumber'] . "</td>"; // I want to button here echo "<td>" . $row['loan'] . "</td>"; echo "<td>" . $row['publicationdate'] . "</td>"; echo "<td>" . $row['reservation'] . "</td>"; echo "<td>" . $row['borrowdate'] . "</td>"; echo "<td>" . $row['returndate'] . "</td>"; echo "<tr></tr>"; 的测试数据库,并且该数据库已存在。您应该检查所用数据库软件的表,并检查"database_name"中的内容,它可能是错误创建的。

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

您应该在database_name中设置测试数据库的名称。 settings.py设置中有一个特定的TEST dictionary

DATABASE

settings.py

默认情况下,前缀... DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'USER': 'mydatabaseuser', 'NAME': 'mydatabase', 'TEST': { 'NAME': 'mytestdatabase', }, }, } ... 被添加到开发数据库的名称中。您应该检查自己的test_来检查情况。

来自docs

  

通过在settings.py中将每个test_的值前面加上NAME来创建默认的测试数据库名称。使用SQLite时,默认情况下测试将使用内存数据库(即数据库将在内存中创建,完全绕开文件系统!)。 DATABASES中的TEST词典提供了许多用于配置测试数据库的设置。例如,如果要使用其他数据库名称,请在DATABASES字典中为TEST中的任何给定数据库指定NAME。