I det link, du angiver, står der tydeligt, at for TEXT-felter, "Den effektive maksimale længde er mindre, hvis værdien indeholder multibyte-tegn. "
UTF-8 er et Unicode-tegnsæt og standard for din database. Den bruger 1-byte-repræsentationer for de første 128 tegn, som matcher ASCII-sættet, og 4-byte-repræsentationer for resten af tegnene.
Det betyder, at en TEKST-kolonne kan have flere eller færre tegn gemt alt efter om tegnene er ASCII eller ej.
Nu kommer dit problem, når MySQL-driveren ikke håndterer dette korrekt, og vil antage, at alle UTF-8-tegn er 4 bytes brede , og vil dividere kolonnelængden med de 4 bytes og overføre det til datatabellen som den faktiske feltlængde. Det betyder, at det er teknisk muligt at have noget tekst i din database, der ikke passer ind i datatabellen, som det er sket i dit tilfælde.
Løsningen (eller løsningen i dette tilfælde) på dit problem er præcis, hvad du har gjort for nu, hvilket er at ændre kolonnen til en type, der kan indeholde flere tegn, som MEDIUMTEXT eller LONGTEXT.
Mit gæt er, at denne beslutning blev truffet for at forenkle implementeringen af MySQL-driveren, men jeg ville overveje at indsende en fejlrapport til Oracle.