Тест Django не работает с InternalError: нет такой точки сохранения. DB: Postgres, передает mysql

Интересно, что он также работает на оболочке.

[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, которые не поддерживают транзакции

licensed under cc by-sa 3.0 with attribution.