MySQLのデータベース・テーブル・カラムの文字セットを確認する方法
MySQLでは、データベース、テーブル、カラムそれぞれに個別の文字セット(キャラクタセット)が設定されます。文字化けやデータ整合性のトラブルを防ぐためにも、実際にどの文字セットが使われているのかを確認できることは非常に重要です。本記事では、information_schemaを活用して文字セットを調べる方法を、具体例とともにわかりやすく解説します。
検証環境について
ここでは、例として「business」という名前のデータベース、およびその中に既に存在する「student」というテーブルを使用します。
テーブルの文字セットを確認する
テーブルの文字セットを確認するには、information_schema の TABLES テーブルと COLLATION_CHARACTER_SET_APPLICABILITY テーブルを照合順序(collation)をキーに結合して照会します。基本構文は以下の通りです。
SELECT CCSA.character_set_name
FROM information_schema.`TABLES` T,
information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
AND T.table_schema = "yourDatabaseName"
AND T.table_name = "yourTableName";
この構文を使って、「business」データベース内の「student」テーブルの文字セットを確認してみましょう。
mysql> SELECT CCSA.character_set_name
-> FROM information_schema.`TABLES` T,
-> information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
-> WHERE CCSA.collation_name = T.table_collation
-> AND T.table_schema = "business"
-> AND T.table_name = "student";
実行結果は以下の通りです。
+--------------------+ | CHARACTER_SET_NAME | +--------------------+ | utf8mb4 | +--------------------+ 1 row in set (0.13 sec)
この結果から、「student」テーブルには utf8mb4 という文字セットが適用されていることが分かります。utf8mb4は絵文字を含む4バイトのUTF-8文字も正しく扱えるため、現在のMySQLでは標準的に推奨される文字セットです。
データベースの文字セットを確認する
データベース全体のデフォルト文字セットを確認する場合は、information_schema の SCHEMATA を参照します。
SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "yourDatabaseName";
「business」データベースに対して実行した例が以下です。
mysql> SELECT default_character_set_name
-> FROM information_schema.SCHEMATA
-> WHERE schema_name = "business";
実行結果:
+----------------------------+ | DEFAULT_CHARACTER_SET_NAME | +----------------------------+ | utf8mb4 | +----------------------------+ 1 row in set (0.00 sec)
カラムの文字セットを確認する
特定のカラムにどの文字セットが設定されているかを確認するには、information_schema の COLUMNS を利用します。
SELECT character_set_name FROM information_schema.`COLUMNS` WHERE table_schema = "yourDatabaseName" AND table_name = "yourTableName" AND column_name = "yourColumnName";
ここでは、「business」データベースの「student」テーブルにある「Name」カラムの文字セットを確認します。
mysql> SELECT character_set_name
-> FROM information_schema.`COLUMNS`
-> WHERE table_schema = "business"
-> AND table_name = "student"
-> AND column_name = "Name";
実行結果:
+--------------------+ | CHARACTER_SET_NAME | +--------------------+ | utf8mb4 | +--------------------+ 1 row in set (0.00 sec)
まとめ
MySQLの文字セット確認は、information_schema を参照することで簡単に行えます。ポイントを整理すると以下の通りです。
- テーブル:TABLES と COLLATION_CHARACTER_SET_APPLICABILITY を collation_name で結合して確認
- データベース:SCHEMATA の default_character_set_name を確認
- カラム:COLUMNS の character_set_name を確認
なお、SHOW CREATE TABLE や SHOW VARIABLES LIKE 'character_set%' といったコマンドでも文字セット関連の情報を手軽に確認できます。用途に応じてこれらの方法を使い分けると、文字コードに関するトラブルシュートがスムーズになります。
-
MySQLでテーブルのカラムサイズを変更する方法|ALTERコマンドの使い方を解説
MySQLでカラムサイズを変更するには?MySQLでは、ALTERコマンドを使うことで、既存テーブルのカラムサイズを後から変更できます。この記事では、実際にエラーが発生するケースから、ALTERコマンドで解決するまでの手順を順番に解説します。カラムサイズが小さいと起こる問題テーブル作成時にカラムにサイズを定義した場合、INSERT時にその定義サイズを超えるデータを挿入しようとすると、エラーが発生します。まずは、CREATEコマンドでサンプル用のテーブルを作成してみましょう。mysql> CREATE table ModifyColumnNameDemo-> (-> id in
-
MySQLで単一テーブルをバックアップする方法【mysqldumpの使い方を解説】
MySQLデータベースから特定のテーブルだけをバックアップしたい場合、標準で付属しているダンプユーティリティ「mysqldump」を使うのが最も確実で一般的な方法です。なお、古いMySQL(バージョン5.0およびそれ以前)ではBACKUP TABLEステートメントによるテーブルバックアップも可能でしたが、この構文はすでに廃止されており、現行バージョンでは利用できません。本記事では、mysqldumpを使って単一テーブルのバックアップファイル(.sql形式)を作成する具体的な手順を解説します。ステップ1:コマンドプロンプトを起動するまず、ショートカットキーでコマンドプロンプト(cmd)を開きます