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. 注意点: データロスリスクとパフォーマンスへの影響について注意が必要です。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲