私は5.6.28 MySQL Community Serverを使用してホストしていますWordPress + CentOS 6.7 Linuxサーバーでドイツ語のProPhotoブログ:
mysql> show tables;
+-----------------------+
| Tables_in_blog |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+
11 rows in set (0.00 sec)
その後、最近、私はロシア語のアプリの開発を開始し、MySQLの設定を/ etc/my.cnfの tf8mb4 エンコーディングに変更する必要がありました。
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
今私は最初のデータベースにまだ小さな問題があり、それはまだlatin1として表示されています:
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | latin1 | HOW TO CONVERT?
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
latin1データベースをutf8mb4に変換する最良の方法は何ですか?
そして、ドイツ語のウムラウト文字(ä ö ü
)プロセスで正しく変換されますか?
ここでは2つの考えられる質問があり、2つの異なる答えがあります-
新しいテーブルをすべてutf8mb4にする方法
これは、データベースの作成中に(1つのデータベースに対して)実行できます。
CREATE DATABASE dbname
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
データベースをALTER
することができます(同様の構文)が、futureテーブルのdefaultのみを提供します。
「サーバー」変数からの継承に関連するバグがあります: http://dev.mysql.com/worklog/task/?id=3811 なので、各データベースで明示的にすることをお勧めします。
既存のlatin1テーブルを変換するにはどうすればよいですか
latin1
として宣言されたテーブルがあり、latin1バイトが正しく含まれていて、すべてのchar/text列をutf8 ...に変更したい場合.
ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4;
これにより定義が変更され、列の必要なバイトがアクティブに変更されます。
ALTER TABLE tbl MODIFY col1 ... CHARACTER SET utf8mb4;
上記に似ていますが、一度に1つの列のみが機能し、MODIFY句で正確なものが必要です。したがって、これはかなり退屈な作業です。ただし、一部の列のみを変更する場合に便利です。