내 설정은 MySql.Data.MySqlClient v6.9.8.0
및 Microsoft.Practices.EnterpriseLibrary.Data v6.0.0
입니다.Microsoft 엔터프라이즈 라이브러리와 MySQL 연결 풀링
프로그램은 장기간 실행중인 프로그램을 실행하고 요청을 처리하는 방식으로 작업을 수행합니다. 때로는 요청이 차례로 처리되는 경우가 있습니다. 그들 사이에는 몇 시간이 걸릴 것입니다. (. 모든 시간 -이 간헐적 문제입니다) :
[MySqlException (0x80004005): Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: Reading from the stream has failed.]
내가 연결 문자열에 Pooling=true
를 사용하여 시도했지만 그것은 나에게 많은 문제를 야기 여기
은 예입니다 pooling
을 해제하면 문제가 해결되지만 동시에 연결을 다시 사용할 수 없으므로 쿼리가 느려집니다. 나는 온라인으로 검색했고 많은 사람들이 똑같은 문제를 겪었고 가능하다면 차라리 피할 수있는 Pooling=false
이라는 유일한 해결책/해결책을 찾았습니다.
Database db = this.GetDatabase(databaseName);
List<dynamic> results = new List<dynamic>();
// Run the sql query
using (DbCommand dbCommand = db.GetSqlStringCommand(query))
{
foreach (var parameter in inParameters)
{
db.AddInParameter(dbCommand, parameter.Key, parameter.Value.Item1, parameter.Value.Item2);
}
foreach (var parameter in outParameters)
{
db.AddOutParameter(dbCommand, parameter.Key, parameter.Value.Item1, parameter.Value.Item2);
}
using (IDataReader dataReader = db.ExecuteReader(dbCommand))
{
IDictionary<string, object> instance;
do
{
// Read each row
while (dataReader.Read())
{
instance = new ExpandoObject() as IDictionary<string, object>;
// Populate the object on the fly with the data
for (int i = 0; i < dataReader.FieldCount; i++)
{
instance.Add(dataReader.GetName(i), dataReader[i]);
}
// Add the object to the results list
results.Add(instance);
}
} while (dataReader.NextResult());
}
return results;
}
어떤 아이디어 : 여기
내 쿼리 코드의 예입니다?
어떤 EntLib.Data -> MySql "어댑터"를 사용하고 있습니까? http://entlibcontrib.codeplex.com/releases EntLib 6에 코딩 된 코드가 하나도 보이지 않습니다. – granadaCoder
Nuget 양식을 설치했습니다. 그 코드는 나에게 표시됩니다. –
Nuget 패키지와 버전을 알려주십시오. "packages.config"파일에서 해당 줄을 찾으십시오. – granadaCoder