Ошибка означает, что в пуле соединений нет соединений.Обычная причина - забыть закрыть соединение после того, как вы его используете, например:
var con = new MySqlConnection("Server=YourDB;Database=YourDb;...");
con.Open();
var com = con.CreateCommand();
com.CommandText = "select * from YourTable";
Этот код забывает закрыть соединение, поэтому у пула на одно соединение меньше.Вы можете исправить это, добавив:
con.Close();
в конце.Но если запрос выдает исключение, Close
будет пропущено, и вы по-прежнему не подключитесь к 1 соединению.
Гораздо лучшим способом является оператор using
:
using (var con = new MySqlConnection("Server=YourDB;Database=YourDb;..."))
{
con.Open();
var com = con.CreateCommand();
com.CommandText = "select * from YourTable";
}
Вы можете легко устранить эту проблему, добавив max pool size
в конце вашего соединения, например:
Server=YourDB;Database=YourDbUid=YourUser;Pwd=YourPwd;max pool size=1;
Это дает вам пул размером 1, мгновенно вызывая состояние ошибки, если вы забудете освободитьваше единственное соединение.