gpt4 book ai didi

python - 无法回滚带有 MySQL 非事务性更改表的 Django

转载 作者:可可西里 更新时间:2023-11-01 07:08:10 25 4
gpt4 key购买 nike

使用 MySQL 数据库时不断收到此警告:

一些非事务性更改的表无法回滚

我不确定这意味着什么,或者它是否会导致问题,但我希望有人能够告诉我这意味着什么。

我正在获取一个 CSV 文件,逐行读取它并使用 get_or_create 创建 Django 对象。收到消息后,当我尝试重新创建它时,我在出现警告之前进一步查看了 CSV 文件。

我尝试在线阅读有关此错误的信息,但我真的不明白它的含义。找出导致此问题的原因是理想的,但如果我不能,我想知道我是否可以抑制警告,因为它可能不会对我的数据库产生负面影响。

最佳答案

当您混合使用事务性非事务性 表时,就会发生这种情况。对非事务表的更改不受 ROLLBACK 语句的影响。

由于某些原因,这可能发生在您身上,我们可以求助于 docs :

if you were not deliberately mixing transactional and nontransactional tables within the transaction, the most likely cause for this message is that a table you thought was transactional actually is not. This can happen if you try to create a table using a transactional storage engine that is not supported by your mysqld server (or that was disabled with a startup option). If mysqld does not support a storage engine, it instead creates the table as a MyISAM table, which is nontransactional.

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

关于python - 无法回滚带有 MySQL 非事务性更改表的 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23940814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com