如何为Django Unittest在Mysql测试表上创建索引

如何为Django Unittest在Mysql测试表上创建索引,mysql,django,indexing,python-unittest,Mysql,Django,Indexing,Python Unittest,我正在尝试为具有django原始查询的api创建UnitTests。此原始查询使用强制索引。 运行测试时,我遇到以下错误: File "/home/vagrant/.envs/django/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 114, in exe cute return self.cursor.execute(query, args) File "/home/vagr

我正在尝试为具有django原始查询的api创建UnitTests。此原始查询使用强制索引。 运行测试时,我遇到以下错误:

  File "/home/vagrant/.envs/django/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 114, in exe
cute
    return self.cursor.execute(query, args)
  File "/home/vagrant/.envs/django/local/lib/python2.7/site-packages/MySQLdb/cursors.py", line 205, in execute
    self.errorhandler(self, exc, value)
  File "/home/vagrant/.envs/django/local/lib/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorha
ndler
    raise errorclass, errorvalue
DatabaseError: (1176, "Key 'dBegDate_index' doesn't exist in table 't'")
这里
t
是我的表的别名

注意:默认数据库具有所有索引。这个业务逻辑API在默认数据库上工作正常


那么这是否意味着,对于测试数据库,没有设置索引?如果没有,那么如何在setUp()中为测试数据库创建索引

您首先是如何定义索引的?这一切都应该通过迁移来完成。@DanielRoseman正如我在上面的描述中提到的,业务逻辑api工作得很好,因为它运行在具有索引集的生产Mysql表上。但是现在,我想测试这个业务逻辑api,我不知道如何为Django unittests创建的测试数据库中的表添加索引。但是,您希望测试数据库如何知道您直接在生产数据库中创建的索引?这正是迁移的目的,在代码中定义db结构,使其在所有环境中都是可复制的。索引是显式应用于db本身的,我没有为此使用迁移,这不是正确的方法。所以现在我被困在这里。我应该在测试设置中显式地设置索引(原始sql)吗?