Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySqlDataReader.GetStream() löst IndexOutOfRangeException aus

Deinstallieren Sie MySql.Data und ersetzen Sie es durch MySqlConnector .

(Offenlegung:Ich bin der Melder des MySql-Fehlers, den Sie gefunden haben und der Hauptbeitragende zu MySqlConnector .)

Neben der Behebung dieses Problems und vieler anderer Fehler , MySqlConnector fügt echte asynchrone E/A-Unterstützung und Leistungsverbesserungen hinzu.

Wenn Sie die Bibliotheken nicht wechseln möchten, ein wenig bekanntes Feature von GetBytes (wird sowohl von MySql.Data als auch von MySqlConnector unterstützt) besteht darin, dass ein null übergeben wird buffer gibt die benötigte Länge zurück, sodass Sie sie nicht fest codieren müssen:

// get the length of the column and allocate a buffer
var length = dbDataReader.GetBytes(0, 0, null, 0, 0);
var passwordHash = new byte[length];

// fill the buffer from the column
dbDataReader.GetBytes(0, 0, passwordHash, 0, passwordHash.Length);