Django 测试因 InternalError 失败:没有这样的保存点。 DB:Postgres,通过 mysql
Posted
技术标签:
【中文标题】Django 测试因 InternalError 失败:没有这样的保存点。 DB:Postgres,通过 mysql【英文标题】:Django Tests fail with InternalError: no such savepoint. DB: Postgres, passes on mysql 【发布时间】:2010-12-13 01:41:51 【问题描述】:有趣的是,它也适用于 shell。
[MY code which calls Model.objects.get_or_create(...)]
File "/usr/lib/python2.5/site-packages/django/db/models/manager.py", line 123, in get_or_create
return self.get_query_set().get_or_create(**kwargs)
File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 308, in get_or_create
transaction.savepoint_rollback(sid)
File "/usr/lib/python2.5/site-packages/django/db/transaction.py", line 199, in savepoint_rollback
connection._savepoint_rollback(sid)
File "/usr/lib/python2.5/site-packages/django/db/backends/__init__.py", line 67, in _savepoint_rollback
self.cursor().execute(self.ops.savepoint_rollback_sql(sid))
InternalError: no such savepoint
【问题讨论】:
【参考方案1】:如果你想测试使用事务的代码,你需要继承 TransactionTestCase
而不是 TestCase
例如:
from django.test import TransactionTestCase
class MyTests(TransactionTestCase):
...
它可能在 mysql 中通过,因为您使用的是不支持事务的 MyISAM 表
【讨论】:
以上是关于Django 测试因 InternalError 失败:没有这样的保存点。 DB:Postgres,通过 mysql的主要内容,如果未能解决你的问题,请参考以下文章
Django创建表时报错django.db.utils.InternalError: (1366问题解决记录
django 修改字段后,同步数据库,失败:django.db.utils.InternalError: (1054, "Unknown column 'api_config.pro
django.db.utils.InternalError: (1050, "Table 'tb_content' already exists")
on - django 执行数据库迁移后数据库并未更新 和 InternalError: (1054, u"Unknown column 'xxx' in 'fiel