トップページ -> 実践知識 -> Apache, MySQL, PHP, phpMyAdmin のインストールと各種ツールの使用法 -> phpMyAdmin や MySQL コマンドライン・クライアントで、日本語のテーブル名を使うための設定(MySQL 5.1 の場合)
[サイトマップへ], [サイト内検索へ],

phpMyAdmin や MySQL コマンドライン・クライアントで、日本語のテーブル名を使うための設定(MySQL 5.1 の場合

サイト構成 連絡先,業績 実践知識 コンピュータ 教材 サポートページ

phpMyAdminMySQL コマンドライン・クライアント を使い、MySQL バージョン 5.1 で、日本語の名前を持ったテーブルを定義し,日本語のデータをテーブルに格納し てみます.

結論としては、MySQL バージョン 5.1 の場合,

前準備

前準備としては、MySQL バージョン 5.1 のインストールを終えていること。 MySQL インストール (Windows の場合) の Web ページ あるいは MySQL インストール (Linux の場合) の Web ページを参考にしてください。


キャラクタセットに関する設定

既定(デフォルト)のキャラクタセットとして, cp932utf8 などを以下の手順で設定しておくこと. 設定をしなくても「何となく」動くことが多いですが,文字化けなどのトラブルの可能性が増えます.

C:\Program Files\MySQL\MySQL Server 5.1\my.ini (XAMPP の場合は C:\xampp\mysql\bin\my.ini) をエディタで書き換える

MySQL バージョン 5.1 以上での設定手順です バージョン 5.0 では、my.cnf のようなファイル名になっていたのですが、変わりました.設定の中身も違う.

  1. 「my.ini」をエディタで開く

    XAMPP を使って MySQL をインストールしたので,my.ini の場所は c:\xampp\mysql\bin\my.ini のようになっている.

  2. 次の3箇所を追加する

    文字コードcp932にしたい場合には,次のように my.ini を書きかえる.

    1. [mysqld]部分

    2. [mysqldump]部分

    3. [mysql]部分

    文字コードutf8にしたい場合には,次のように my.ini を書きかえる.

    1. [mysqld]部分

    2. [mysqldump]部分

    3. [mysql]部分

  3. 書き換えた後は,MySQL サーバを再起動

  4. status コマンドを使い,キャラクタセット(character set) の設定が「cp932」や「utf8」になっていることを確認.

※ キャラクタセットの設定をせずに,すでにデータベースを生成してしまった! という場合には, 上記の手順で解決の手がかりがつかめるかも知れません.


MySQL コマンドライン・クライアントでの操作手順 (cp932 に設定した場合の実例)

MySQL コマンドライン・クライアント を使い、MySQL バージョン 5.1 で、日本語(漢字)の名前を持ったテーブルを定義してみます. ここでは cp932 に設定した場合の実例を示す.

※ Windows のコマンドプロンプトなので,cp932 に設定すると動きます.utf8 に設定すると文字が化けます.

  1. MySQL コマンドライン・クライアントの起動

    「スタート」→「プログラム」→「MySQL」→「MySQL Server 5.1」→「MySQL Command Line Client」

  2. 漢字コード設定内容の確認

    「show variavles like 'char%';」と 「show variavles like 'collation%';」を実行。「cp932」に設定されていることを確認(設定されていなければ、mysql.ini の更新をやりなおす)。

    ※ 「character_set_system | utf8 」は、変える手段が無い、ので気にしない(データベースファイルのディレクトリ名を utf8 漢字コードを利用して付ける、という意味のようです)。

    ※ 「character_set_filesystem | binary 」は気にしなくてよい。

  3. データベースの生成、権限の設定

    データベース名はなんでも良いですが、ここでは、データベース名を t30と書きます.

    • create database t30 ... データベース名「t30」のデータベースを生成。漢字コードは、cp932 になる。(create database は、MySQL の方言)。

  4. テーブル定義、データの挿入と確認

結論: MySQL コマンドライン・クライアント を使うのなら、 MySQL バージョン 5.1 では、cp932 に設定する。(以後のバージョンでは、どうなるかは分かりません)。

バージョン 5.0 のときとの違い


(参考)utf8 ではうまくいかない

MySQL コマンドライン・クライアント を使う場合、 utf8 ではうまくいかないことを確認しておきました。以下が記録です.

※ MySQL バージョン 5.1 を使いました(以後のバージョンでは、どうなるかは分かりません)。

  1. まず,事前準備として,データベース生成

  2. テーブル名「ほげ」のテーブルを定義.問題なさそう.

  3. しかし,テーブル名として全角のローマ数字が入っているとダメ.


phpMyAdmin での日本語

phpMyAdmin を使っている限りでは,「文字化け」はあまり意識しないかも知れません. ここでは,テーブルの中身やテーブル名に日本語を使う場合の動作例を示す.

以下の条件で動作させました.

phpMyAdmin での動作例

  1. テーブル定義

    ※ テーブル名に日本語を使っていますが、特に問題なし。

    create table 科目 (
           科目番号	  integer	not null,
           科目名	  varchar(100)	not null,
           単位数	  integer	not null,
           担当教員名 varchar(100) 	not null,
           primary key (科目番号)
    );
    
    create table 学生 (
           学生番号	  integer	not null,
           氏名	  varchar(100)	not null,
           primary key (学生番号)
    );
    
    create table 履修登録 (
           科目番号	  integer	not null,
           学生番号	  integer	not null,
           primary key (科目番号,学生番号),
           foreign key (科目番号) references 科目(科目番号),
           foreign key (学生番号) references 学生(学生番号)
    );
    

  2. テーブルの更新

    ※ テーブルの中身に日本語が含まれていますが、特に問題なし。

    insert into 科目 values ( 1001, 'データベース',    2, 'X' );
    insert into 科目 values ( 1002, 'プログラミング',  2, 'Y' );
    insert into 学生 values ( 2008001, 'AA AAA' );
    insert into 学生 values ( 2008002, 'BB BBBB' );
    insert into 履修登録 values ( 1001, 2008001 );
    insert into 履修登録 values ( 1001, 2008002 );
    insert into 履修登録 values ( 1002, 2008002 );
    

  3. SQL による問い合わせ

    ※ 文字化けせずに表示される.

    SELECT *
    FROM 科目;