Django w/MySQL非事务性更改表无法回滚

Mik*_*ike 5 python mysql csv django transactions

使用MySQL数据库继续获取此警告:

Some non-transactional changed tables couldn't be rolled back

我不确定这意味着什么,或者它是否甚至导致了问题,但我希望有人能够让我知道这意味着什么.

我正在使用CSV文件,逐行读取并使用创建Django对象get_or_create.收到消息后,当我尝试重新创建消息时,在警告发生之前,我会进一步进入CSV文件.

我尝试在线阅读这个错误,但我真的不明白这意味着什么.理所当然地弄清楚是什么造成这种情况,但如果我不能,我想知道我是否可以抑制警告,因为它可能不会对我的数据库产生负面影响.

nsf*_*n55 4

当你混合transactionalnon-transactional桌子时会发生这种情况。对非事务表的更改不受ROLLBACK语句影响。

由于某些原因,您可能遇到过这种情况,我们可以参阅文档

如果您没有故意在事务中混合事务性表和非事务性表,则出现此消息的最可能原因是您认为是事务性的表实际上不是事务性的。如果您尝试使用 mysqld 服务器不支持的事务存储引擎(或者通过启动选项禁用)创建表,则可能会发生这种情况。如果 mysqld 不支持存储引擎,它会将表创建为 MyISAM 表,这是非事务性的。

如果您说有一个HTTP启动事务的请求,您进行了一些更改,并且需要回滚,这将对事情产生负面影响。事务表将回滚,但其他表不会回滚。如果您的软件需要事务存储引擎,您应该考虑采取措施将所有相关表迁移到引擎InnoDB