latin1 でエンコードされた列が多数あるデータベースを utf8 に変換する作業を行っています。誤ってエンコードされた行が多数あり、列全体を移行する前に latin1 -> utf8 に変換する必要があります。次のクエリを使用して、問題のある行を特定するスクリプトを作成しました。
SELECT count(*) as count
FROM `user_profiles`
WHERE CONVERT(CAST(`last_name` AS binary) USING utf8) IS NULL;
ローカルでは、4,000 行のカウントを返します。本番環境で実行すると、4,000 件の警告で空の結果が得られます。MySQL に警告を正常に返すように指示する設定、または私が見逃している設定が必要です。何かご意見は?
すべての文字セット変数が UTF8 に設定されていることを確認してみました。サーバーは mysql 5.5.29 を実行しており、5.6.13 をローカルで実行しています。