【问题标题】:Django Tests fail with InternalError: no such savepoint. DB: Postgres, passes on mysqlDjango 测试因 InternalError 失败:没有这样的保存点。 DB:Postgres,通过 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

【问题讨论】:

    标签: python mysql django postgresql


    【解决方案1】:

    如果你想测试使用事务的代码,你需要继承 TransactionTestCase 而不是 TestCase

    例如:

    from django.test import TransactionTestCase
    
    class MyTests(TransactionTestCase):
        ...
    

    它可能在 MySql 中通过,因为您使用的是不支持事务的 MyISAM 表

    【讨论】:

      猜你喜欢
      • 2012-12-29
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 2013-02-07
      • 1970-01-01
      • 2018-06-29
      • 2021-09-28
      相关资源
      最近更新 更多