2026年9月15日
2026年9月15日
MySQLのcharset・collationを変更する方法
ステップ1: 現状確認
まず、現在のcharsetやcollation設定を確認します。これにより、必要に応じて変更を行います。
# MySQLのバージョンとcharset・collationの確認
mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set_%'; SHOW VARIABLES LIKE 'collation%';"
ステップ2: データベースとテーブルを修正
charsetやcollationを変更するには、まずデータベースとその中のテーブルの設定を修正します。
# 新しいcharset(例:utf8mb4)とcollation(例:utf8mb4_unicode_ci)を使用して新しいデータベースを作成
mysql -u root -p -e "CREATE DATABASE newdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 既存のデータベースのcharset・collationを変更する場合
mysql -u root -p -e "ALTER DATABASE olddb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;"
ステップ3: テーブルと列の修正
次に、テーブルとその中の列もcharset・collationを変更します。
# 新しいデータベースに移動してから新しいテーブルを作成
mysql -u root -p newdb -e "CREATE TABLE example (id INT PRIMARY KEY, name VARCHAR(100));"
# 既存のテーブルと列のcharset・collationを変更する場合
mysql -u root -p olddb -e "ALTER TABLE existing_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
ステップ4: 設定ファイルの修正
MySQLの設定ファイル(my.cnfまたはmy.ini)も更新します。これにより、データベース接続時にcharset・collationが適切に適用されます。
# my.cnfやmy.iniを編集する
vi /etc/my.cnf
[mysqld]
character_set_server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET collation_connection = utf8mb4_unicode_ci'
注意事項
- データロスのリスク: データベースのcharset・collationを変更すると、一部の文字が正しく保存されなくなる可能性があります。データのバックアップを前提として進めることが重要です。
- パフォーマンスへの影響: 大規模なテーブルに対してcharset・collationを変更すると、一時的なパフォーマンス低下が発生する可能性があります。
- 相互運用性: 他のシステムとの相互運用性を考慮し、共通の文字コードを使用することをお勧めします。
まとめ
1. charsetとcollationの確認: 現状を把握し、必要に応じて変更を行うためのステップ。
2. データベースとテーブルの修正: 新しいcharset・collationで新しいデータベースやテーブルを作成する方法。
3. 設定ファイルの修正: MySQLの設定ファイルを更新して、charset・collationが正しく適用されるようにします。
4. 注意点: データロスリスクとパフォーマンスへの影響について注意が必要です。
関連記事: