Заметив, что приложение склонно отбрасывать случайные электронные письма из-за неправильных ошибок строковых значений, я пошел и переключил многие текстовые столбцы, чтобы использовать utf8
набор символов столбца и столбец по умолчанию collate ( utf8_general_ci
), чтобы он принимал их. Это исправило большинство ошибок и заставило приложение перестать получать sql-ошибки, когда оно попадало и на нелатинские электронные письма.
Несмотря на это, некоторые электронные письма все еще приводят к тому, что программа ошибается ошибочными строковыми значениями: (Incorrect string value: '\xE4\xC5\xCC\xC9\xD3\xD8...' for column 'contents' at row 1)
Столбец содержимого представляет собой MEDIUMTEXT
тип данных, который использует набор utf8
символов utf8_general_ci
столбца и сопоставление столбца. В этом столбце нет флагов, которые я могу переключить.
Помня о том, что я не хочу трогать или даже смотреть на исходный код приложения без крайней необходимости:
- Что вызывает эту ошибку? (да, я знаю, что письма полны случайного мусора, но я подумал, что utf8 будет довольно разрешительным)
- Как я могу это исправить?
- Каковы возможные последствия такого исправления?
Одна вещь, которую я рассмотрел, это переключение на utf8 varchar ([какое-то большое количество]) с включенным двоичным флагом, но я довольно незнаком с MySQL и не знаю, имеет ли такое исправление смысл.