为什么相同的MySql查询在代码和工作台中的行为不同?

时间:2019-04-12 12:33:58

标签: c# mysql mysql-workbench

这是从我的应用程序运行的简单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中调用相同的过程,则会得到异常,这是所需的行为。发生这种行为的原因可能是什么?

1 个答案:

答案 0 :(得分:-1)

因为您的应用程序可能会使繁忙的mysql繁忙。因此,当您的进度完成时需要关闭连接,例如connection.Close(),我建议使用:

if (con.State==ConnectionState.Open)
{
  con.Close();
}
  con.Open();