不正な文字列値エラーのためにアプリケーションがランダムなメールを破棄する傾向があることに気付いた後、私は行って、多くのテキスト列を切り替えて、utf8列の文字セットとデフォルトの列照合(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はかなり許容できると思いました)
- どうすれば修正できますか?
- そのような修正の可能性のある影響は何ですか?
私が検討したことの1つは、バイナリフラグをオンにしてutf8 varchar([some large number])に切り替えることでしたが、MySQLにはあまり慣れていないので、そのような修正が意味があるかどうかはわかりません。