【问题标题】:MySql exception while doing several requests after one anotherMySql 异常同时执行多个请求
【发布时间】:2017-12-10 01:50:29
【问题描述】:

我有一个 aspnetcore 网络服务,它一个接一个地执行多个请求。我在不同的时间得到一个例外。错误消息是:

MySql.Data.MySqlClient.MySqlException:连接错误:超时已过期。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用中并且已达到最大池大小。

在 MySql.Data.MySqlClient.MySqlPool.GetConnection()

在 MySql.Data.MySqlClient.MySqlConnection.Open()

在 bdtFood.Controllers.FoodController.Get(Int32 id, Int32 idMeeting)

在 lambda_method(Closure , Object , Object[] )

在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__28.MoveNext()

我该如何处理这个异常。同一时间不应有多个请求。

编辑:请求的代码。

while (cn.State == System.Data.ConnectionState.Open)
        {

        }
        cn.Close();
        cn.Open();
        Modells.Room room = new Modells.Room(-2, "dummy");
        MySqlCommand myCommand = new MySqlCommand("SELECT * FROM room WHERE idRoom = @idRoom", cn);
        myCommand.Parameters.Add("@idRoom", MySqlDbType.Int32, 11).Value = idRoom;
        using (reader = myCommand.ExecuteReader())
        {
            while (reader.Read())
            {
                room = new Modells.Room(reader.GetInt32(0), reader[1].ToString());
            }
        }

【问题讨论】:

  • 你在处理你的连接和命令吗?
  • 我为每个请求使用新连接和新命令。这可能是问题吗?我认为这不会是问题,因为我一次使用它们。
  • 如果没有看到你的一些代码,就不可能给你任何其他更具体的建议。
  • 我将代码更改为在控制器中使用相同的连接。并且仍然出现同样的错误

标签: c# mysql


【解决方案1】:

您需要在所有命令和控制器周围使用using

更多详情请见https://stackoverflow.com/a/1808056/34092

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2015-11-25
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    相关资源
    最近更新 更多