Après avoir remarqué une application tendance à jeter aléatoire e-mails suite à une erreur de la chaîne de valeur des erreurs, je suis allé, bien que de commutation de plusieurs colonnes de texte à utiliser l' utf8
colonne jeu de caractères et la valeur par défaut de la colonne collate (utf8_general_ci
) alors qu'elle allait accepter. Ce corrigé la plupart des erreurs, et en a fait la demande cessez de recevoir des erreurs sql quand il a frappé non latine e-mails, trop.
Malgré cela, certains des e-mails sont toujours provoque le programme pour frapper incorrecte de la chaîne de valeur errrors: (Incorrect string value: '\xE4\xC5\xCC\xC9\xD3\xD8...' for column 'contents' at row 1)
Le contenu de la colonne est une MEDIUMTEXT
datatybe qui utilise l' utf8
colonne charset et l' utf8_general_ci
colonne rassembler. Il n'y a pas de drapeaux que je peux activer dans cette colonne.
En gardant à l'esprit que je ne veux pas toucher ou même de regarder le code source de l'application, sauf si absolument nécessaire:
- Quelle est la cause de cette erreur? (oui, je sais que les e-mails sont plein d'aléatoire d'ordures, mais j'ai pensé utf8 serait assez permissive)
- Comment puis-je résoudre ce problème?
- Quels sont les effets probables d'une telle solution?
Une chose que je considère a été le passage à une utf8 varchar([un grand nombre]) avec le binaire indicateur allumé, mais je suis assez familier avec MySQL, et n'ai aucune idée si cette correction fait sens.