トップページ -> コンピュータ実習 -> 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 科目;