gpt4 book ai didi

c# - 发生未处理的异常后使用 C# Mysql Connector 禁用自动提交

转载 作者:行者123 更新时间:2023-11-29 08:47:20 26 4
gpt4 key购买 nike

我目前正在开发一个使用 MySql 作为后端数据库的 C# 应用程序。

不幸的是,我发现了一种我无法解释的有线行为。

我想使用事务来“组合”多个查询,以确保仅执行所有命令或不执行任何命令。

但是,由于我的编码错误,交易过程中出现了未处理的异常。

我对事务的理解是,在这种情况下,事务会回滚。

尽管如此,我发现Mysql似乎默认启用了AutoCommit,并在断开连接后提交,因为未处理的异常导致崩溃。

所以我尝试通过执行SET autocommit = 0来禁用它

但这行不通。

编辑:我使用以下代码创建了交易:

_transaction = _mysqlConnection.BeginTransaction();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = _mysqlConnection;
cmd.Transaction = _transaction

其他人提到,使用 BEGIN 应该可以解决这个问题,但事实并非如此。在Mysql日志中执行以下查询:

239 Connect   user@localhost on gssm
239 Query SHOW VARIABLES
239 Query SHOW COLLATION
239 Query SET character_set_results=NULL
239 Init DB db
239 Query SET autocommit = 0
239 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
239 Query BEGIN
239 Query INSERT INTO TestTable (KeyField, Value) VALUES ('foo', 'bar')

当然我应该修复我的代码,这样就不会发生未处理的异常,但是有没有办法阻止Mysql这样做?

谢谢!

克里斯

最佳答案

使用实际上支持事务的 MySql 引擎是个好主意...MyISAM 不支持,这就是问题所在。因此,如果想使用事务,请确保使用正确的引擎(例如 InnoDB)。

很抱歉浪费了您的时间,感谢您的建议。

克里斯

关于c# - 发生未处理的异常后使用 C# Mysql Connector 禁用自动提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12228850/

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