gpt4 book ai didi

c# - 设置 CommandTimeout 以解决超出锁定等待超时的问题尝试重新启动事务

转载 作者:行者123 更新时间:2023-11-29 06:16:47 25 4
gpt4 key购买 nike

我有这样的错误

lock wait timeout exceeded try restarting transaction

可能是我没看懂。但是如果我设置 CommandTimeout=1000 或更高,我有一个解决方案。我还没有在生产中尝试过。但我想听听对此的任何意见。

// 40 lines of command.Parameters here
command.Parameters.AddWithValue("sample1", sam1);
command.Parameters.AddWithValue("sample2", sam2);
command.Parameters.AddWithValue("sample3", sam2);
try
{
command.ExecuteNonQuery();

}
catch (MySqlException mex)
{

最佳答案

我间歇性地收到“超过锁定等待超时尝试重新启动事务”。然后我开始将所有内容包装在交易中,我不再收到这些错误。这应该可以防止在执行查询后保留表锁。

(假设“conn”是一个 MySqlConnection,“iLevel”是您要使用的隔离级别,“query”包含您的查询字符串)

int rowCount = 0; // In case you want the number of rows affected

try
{
if (conn.State != ConnectionState.Open)
conn.Open();

MySqlCommand command = new MySqlCommand(query, conn);

using(var transaction = conn.BeginTransaction(iLevel))
{
command.Transaction = transaction;
command.CommandTimeout = int.MaxValue;

// Set parameters etc...

try
{
rowCount = command.ExecuteNonQuery();
transaction.Commit();
}
catch(Exception ex)
{
transaction.Rollback();
// Handle query exception...
}
}
}
catch(Exception ex)
{
// Handle general exception...
}

关于c# - 设置 CommandTimeout 以解决超出锁定等待超时的问题尝试重新启动事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35435028/

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