Mysql
 sql >> Database >  >> RDS >> Mysql

MySqlDataReader.GetStream() genera IndexOutOfRangeException

Disinstalla MySql.Data e sostituiscilo con MySqlConnector .

(Disclosure:sono il reporter del bug di MySql che hai trovato e il contributore principale a MySqlConnector .)

Oltre a risolvere il problema e molti altri bug , MySqlConnector aggiunge vero supporto I/O asincrono e miglioramenti delle prestazioni.

Se non vuoi cambiare libreria, una funzionalità poco conosciuta di GetBytes (supportato sia da MySql.Data che da MySqlConnector) è quello che passa in un null buffer restituisce la lunghezza necessaria, quindi non è necessario codificarlo:

// 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);