这是从我的应用程序运行的简单mysql查询:
try
{
using (var connection = new MySqlConnection(connectionString))
{
var storedProcedure = "ReserveConstructB";
using (var command = new MySqlCommand(storedProcedure, connection))
{
command.CommandType = CommandType.StoredProcedure;
connection.Open();
command.ExecuteNonQuery();
}
}
}
这是简单的存储过程:
BEGIN
start transaction;
select *from Kimmel_constructs for update;
END
如您所见,我没有在过程结束时提交,但是无论如何,即使未发布“ Kimmel_constructs”,下一次运行该过程时,它也会被执行,并且我应该得到lock_wait_timeout异常。如果我从不同的连接在MySql Workbench中调用相同的过程,则会得到异常,这是所需的行为。发生这种行为的原因可能是什么?
答案 0 :(得分:-1)
因为您的应用程序可能会使繁忙的mysql繁忙。因此,当您的进度完成时需要关闭连接,例如connection.Close(),我建议使用:
if (con.State==ConnectionState.Open)
{
con.Close();
}
con.Open();