Nel collegamento fornito, si afferma chiaramente che per i campi TESTO, "La lunghezza massima effettiva è inferiore se il valore contiene caratteri multibyte. "
UTF-8 è un set di caratteri Unicode e l'impostazione predefinita per il tuo database. Utilizza rappresentazioni a 1 byte per i primi 128 caratteri, che corrispondono al set ASCII, e rappresentazioni a 4 byte per il resto dei caratteri.
Ciò significa che una colonna TESTO può contenere più o meno caratteri memorizzati a seconda che i caratteri siano ASCII o meno.
Ora, il tuo problema si presenta quando il driver MySQL non lo gestisce correttamente e supporrà che tutti i caratteri UTF-8 siano larghi 4 byte e dividerà la lunghezza della colonna per i 4 byte e la passerà a DataTable come la lunghezza del campo effettiva. Ciò significa che è tecnicamente possibile avere del testo nel tuo database che non rientrerà nella DataTable, come è successo nel tuo caso.
La soluzione (o la soluzione alternativa in questo caso) al tuo problema è esattamente ciò che hai fatto per ora, ovvero cambiare la colonna in un tipo che può contenere più caratteri, come MEDIUMTEXT o LONGTEXT.
La mia ipotesi è che questa decisione sia stata presa per semplificare l'implementazione del driver MySQL, ma cercherei di inviare una segnalazione di bug a Oracle.