我使用了inspectdb从MySQL Connector / Python连接的MySQL数据库中导入了Models模式。
当我运行测试时,系统显示:
django.db.utils.ProgrammingError: Table 'test_mydb.cards' doesn't exist
但表名只是mydb.cards
,而不是test_mydb.cards
为什么要添加此前缀?我的应用名称仅为container
。
答案 0 :(得分:0)
Django使用unittest模块进行测试,同时它创建了一个空白数据库进行测试,因为测试应该始终在相同的空白数据库或数据夹填充数据库上运行。
需要数据库的Tests(即模型测试)将不会使用您的 “真实”(生产)数据库。创建单独的空白数据库 进行测试。
无论测试通过还是失败,测试数据库都是 所有测试都已执行时被销毁。
检查您是否正在为表测试尝试访问进行迁移,因为所有没有迁移的表都无法通过测试套件访问而无需进行单一操作或解决方法
答案 1 :(得分:0)
我找到了原因:我在每个表的managed
中都有False
属性models.py Class Meta
。我从来没有把它放在那里,这是inspectdb
之后的默认值。