Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySqlDataReader.GetStream() lança IndexOutOfRangeException


Desinstale o MySql.Data e substitua-o por MySqlConnector .

(Divulgação:sou o relator do bug do MySQL que você encontrou e o principal colaborador do MySqlConnector .)

Além de corrigir esse problema e muitos outros bugs , o MySqlConnector adiciona suporte a E/S assíncrona e melhorias de desempenho.

Se você não quiser trocar de biblioteca, um recurso pouco conhecido de GetBytes (suportado por MySql.Data e MySqlConnector) é passar um null buffer retorna o comprimento necessário, então você não precisa codificá-lo:
// 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);