Невозможно отключить автосообщение в скрипте с помощью Django ORM

У меня есть сценарий командной строки, который использует сервер Django ORM и MySQL. Я хочу отключить автосообщение и выполнить вручную. Для жизни я не могу заставить это работать. Ниже приведена версия скрипта. Строка вставляется в тестовую таблицу каждый раз, когда я запускаю ее, и я получаю это предупреждение от MySQL: «Некоторые таблицы, не связанные с транзакциями, нельзя отменить».

#!/usr/bin/python import os import sys django_dir = os.path.abspath(os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))) sys.path.append(django_dir) os.environ['DJANGO_DIR'] = django_dir os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' from django.core.management import setup_environ from myproject import settings setup_environ(settings) from django.db import transaction, connection cursor = connection.cursor() cursor.execute('SET autocommit = 0') cursor.execute('insert into testtable values (\'X\')') cursor.execute('rollback') 

Я также попытался помещать вставку в функцию и добавить оболочку commit_manual Django, например:

 @transaction.commit_manually def myfunction(): cursor = connection.cursor() cursor.execute('SET autocommit = 0') cursor.execute('insert into westest values (\'X\')') cursor.execute('rollback') myfunction() 

Я также попытался установить DISABLE_TRANSACTION_MANAGEMENT = True в settings.py, без дальнейшей удачи. Я чувствую, что мне не хватает чего-то очевидного. Любая помощь, которую вы можете мне дать, очень ценится. Благодаря!

Являются ли ваши таблицы MyISAM или InnoDB? Помните, что MyISAM не является транзакционным, поэтому его нельзя отменить. См., Например, эту страницу в документации MySQL:

В транзакционных условиях таблицы MyISAM эффективно работают в режиме autocommit = 1.