サーバー 2003 で古い 5.1 Mysql サーバーを実行しています。最近、Mysql 5.6 とサーバー 2008 を使用する新しい環境に移行しました。新しいサーバーでは、「Ã」などの特殊文字を挿入するとエラーが発生し続けます。
ソースのエンコーディングを確認したところ、UTF-8 でした。しかし、古い Mysql サーバーは、照合 latin_swedish_ci を使用して latin1(サーバー / テーブル / コロン) として構成されており、古い環境ではエラーを受け取りませんでした。
新しい環境に住んでいないので、いくつかのテストを行いました。すべてのテーブルをテーブル/コロンとlatin1に設定しようとしました。どちらの場合も、これらのエラーが発生し続けます。
私が気づいたのは、古いサーバーではサーバーのデフォルトの文字セットがlatin1であり、新しいサーバーではutf-8であるということです. それが問題でしょうか?ソースが utf-8 であるため、これは非常に奇妙です。
古い環境でオンにできる、これを処理するためのオプションはありますか? そのようなものが存在するかどうかはわかりません。mysql 管理ツール内の設定を比較しましたが、デフォルトの文字セットは別として、同じように見えます。
編集:
「char%」のような変数を表示します。
古いサーバー:
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8 | *
| character_set_connection | utf8 | *
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 | *
| character_set_server | latin1 |
| character_set_system | utf8 |
新しいサーバー:
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8mb4 | *
| character_set_connection | utf8mb4 | *
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 | *
| character_set_server | utf8 |
| character_set_system | utf8 |
MySQL サイトの記事からわかる限り、utf8mb4 は utf8 のスーパーセットです。エンコーディングに関しては基本的に同じなので、エンコーディングの問題は発生しないはずです。