Mein Setup ist MySql.Data.MySqlClient v6.9.8.0
und Microsoft.Practices.EnterpriseLibrary.Data v6.0.0
.Pooling von MySQL-Verbindungen mit der Microsoft Enterprise-Bibliothek
Das Programm ist ein lang laufendes Programm, das ständig auf Aufgaben wartet und dann den Job mit einer Art von Datenbankaktion ausführt (je nachdem, was die Anfrage war). Manchmal werden die Anfragen nacheinander ausgeführt, manchmal auch einige Stunden zwischen ihnen sein. (. Nicht die ganze Zeit - das ist zeitweise Probleme)
Ich habe versucht, Pooling=true
in der Verbindungszeichenfolge verwenden, aber es macht mir eine Menge Probleme
Hier ist ein Beispiel:
[MySqlException (0x80004005): Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: Reading from the stream has failed.]
Durch das Deaktivieren von pooling
wird das Problem behoben, aber gleichzeitig werden die Abfragen langsamer, da Verbindungen nicht wiederverwendet werden können. Ich habe online gesucht und viele Leute haben das gleiche Problem und die einzige Lösung, die ich gefunden habe, ist Pooling=false
, die ich lieber meiden würde. Hier
ist ein Beispiel für meine Abfrage-Code:
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;
}
Irgendwelche Ideen?
Welche EntLib.Data -> MySql "Adapter" verwenden Sie? http://entlibcontrib.codeplex.com/releases Ich sehe nicht einen EntLib 6 codiert. – granadaCoder
Ich habe es installiert Nuget, das ist die Version, die für mich zeigt –
Bitte melden Sie die nuget-Paket und Version. Suchen Sie einfach die Zeile in Ihrer Datei "packages.config". – granadaCoder