mysqldumpエンコーディングを強制する

mysqldumpエンコーディングを強制する

2つのmysqlサーバーがあります。同じmysqlクライアントでは、right_serverはフランス語の文字を正しくレンダリングしますが、wrong_serverはそうではありません。エンコーディングは同じです。

$ mysql -h right_server -NBe "'character_set_%' などの変数を表示"
$ mysql -h error_server-NBe "'character_set_%'のような変数を表示する"

同じ結果を提供します。

文字セットクライアントutf8
文字セット接続utf8
文字セットデータベースutf8
文字セットファイルシステムバイナリ
文字セット結果utf8
文字セットサーバー utf8
文字セットシステムutf8

mysqldumpを使用して、テーブル構造が同じであることを確認してください。

$ mysqldump -h right_serverデータベースMY_TABLE grep MY_COL |
$ mysqldump -hエラーサーバーデータベースMY_TABLE grep MY_COL |

ただし、コメントの1つが正しくレンダリングされません。

  `MY_COL` varchar(7) COLLATE utf8_bin COMMENT 'associé à',
  `MY_COL` varchar(7) は utf8_bin コメント 'associ.' をソートします。

mysqldump --default-character-set=UTF8 --no-dataと同じ結果)

文字がwrong_server正しく保存されているようです。

[エラーサーバー] $ mysql -e '生成されたテーブルdb.MY_TABLE\Gを表示'
  `MY_COL` varchar(7) COLLATE utf8_bin COMMENT 'associé à',

mysqldumpエンコーディングを強制する方法は?

注:サーバー間の唯一の違いは次のとおりです。

Character_sets_dir /.../mysql.../share/charsets/

サーバー上にあり、SHOW VARIABLES LIKE 'character_set_%'このディレクトリに定義されているutfファイルはありません。

関連情報