Jak naprawić błędy „Niepoprawna wartość ciągu”?
Po zauważeniu, że aplikacja ma tendencję do odrzucania losowych wiadomości e-mail z powodu błędów w błędnych wartościach ciągów znaków, przeszedłem i zmieniłem wiele kolumn tekstowych, aby użyćutf8
zestawienie kolumn i domyślna kolumna sortują (utf8_general_ci
), aby je zaakceptować. To naprawiło większość błędów i sprawiło, że aplikacja przestała otrzymywać błędy sql, gdy trafiła również na wiadomości e-mail spoza łaciny.
Mimo to niektóre e-maile wciąż powodują, że program trafia na niepoprawne błędy o wartościach ciągu:(Incorrect string value: '\xE4\xC5\xCC\xC9\xD3\xD8...' for column 'contents' at row 1)
Kolumna zawartości to aMEDIUMTEXT
typ danych, który używautf8
zestaw kolumn iutf8_general_ci
zestawić kolumnę. Nie ma flag, które mogę przełączać w tej kolumnie.
Pamiętając, że nie chcę dotykać ani nawet patrzeć na kod źródłowy aplikacji, chyba że jest to absolutnie konieczne:
Co powoduje ten błąd? (tak, wiem, że e-maile są pełne losowych śmieci, ale myślałem, że utf8 będzie całkiem przyzwoity)Jak mogę to naprawić?Jakie są prawdopodobne skutki takiego rozwiązania?Jedną z rzeczy, które rozważyłem, było przejście na varchar utf8 ([pewna duża liczba]) z włączoną flagą binarną, ale nie jestem zaznajomiony z MySQL i nie mam pojęcia, czy taka poprawka ma sens.