Open Source WEB

OSSというようなアルファベットだけのデータベース名の場合に 動作するのは当然である。 これから、日本語、漢字を含むデータベース名でも大丈夫か調べていこう。

まず、漢字を使うので、キャラクタセットを例によって eucjpms にしておこう。

mysql> set names eucjpms;
Query OK, 0 rows affected (0.00 sec)
 
mysql> CREATE DATABASE 漢字;
Query OK, 1 row affected (0.04 sec)
 
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
| 漢字               |
+--------------------+
4 rows in set (0.02 sec)
 
mysql>

ということで、「漢字」という名称のデータベースが作成できた。

念のため、削除も確かめておこう。

mysql> DROP DATABASE 漢字;
Query OK, 0 rows affected (0.00 sec)
 
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)
 
mysql>

大丈夫なようだが、もうすこし色々なことをやってみよう。

mysql> CREATE DATABASE あ;
Query OK, 1 row affected (0.00 sec)
 
mysql> CREATE DATABASE 〇△□;
Query OK, 1 row affected (0.01 sec)
 
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
| 〇△□             |
| あ                 |
+--------------------+
5 rows in set (0.01 sec)

mysql> DROP DATABASE あ;
Query OK, 0 rows affected (0.00 sec)
                                                                                
mysql> DROP DATABASE 〇△□;
Query OK, 0 rows affected (0.00 sec)
                                                                                
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)
                                                                                
mysql>

cp932(SHIFT-JIS)でやってみよう

SET NAMES で cp932を指定して、同様のことをやってみよう。

mysql> SET NAMES cp932;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE 漢字;
Query OK, 1 row affected (0.00 sec)
 
mysql> CREATE DATABASE 〇△□;
Query OK, 1 row affected (0.00 sec)
 
mysql> CREATE DATABASE あ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use
near '' at line 1
mysql>

cp932の場合、データベース名「漢字」、「〇△□」ではデータベースは作成 されたようだが、最も簡単だとおもった「あ」ではエラーになってしまった。 エラーメッセージによると、構文エラーということだが、 どう考えてもそんなことはない‥‥と思うのだが、何かあるのだろうか。

データベース一覧を出して、どうなっているか調べておこう。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
| 〇△               |
| 漢                 |
+--------------------+
5 rows in set (0.00 sec)
 
mysql>

あれ、正しく作られたと思った「漢字」と「〇△□」も変になっていて、 最後の1文字が欠けている。

出来たデータベースは、「漢字」なのだろうか、それとも「漢」なのだろうか。

SHOW CREATE DATABASE で、自分は何をやらかしたか確認しておこう。 ここでは、とりあえず「漢字」と入力してみる。

mysql> SHOW CREATE DATABASE 漢字\G
*************************** 1. row ***************************
       Database: 漢
Create Database: CREATE DATABASE `漢` /*!40100 DEFAULT CHARACTER SET latin1 */
1 row in set (0.00 sec)
 
mysql>

漢字と確かに入力したのだが、「漢」として解釈され、 作られたデータベースも「漢」らしい。 「あ」はエラーになってしまったが、エラーにもならず、 文字が勝手に欠けてしまうのは厄介だ。

今度は、「漢」だけで同じ事をやってみよう。

mysql> SHOW CREATE DATABASE 漢\G
*************************** 1. row ***************************
       Database: 漢
Create Database: CREATE DATABASE `漢` /*!40100 DEFAULT CHARACTER SET latin1 */
1 row in set (0.00 sec)
 
mysql>

ということは、「字」が完全に無くなっている訳だ。何故?

「〇△□」についても同じ事が発生しているのではないかと思う。

mysql> SHOW CREATE DATABASE 〇△□\G
*************************** 1. row ***************************
       Database: 〇△
Create Database: CREATE DATABASE `〇△` /*!40100 DEFAULT CHARACTER SET latin1 */
1 row in set (0.00 sec)
 
mysql> SHOW CREATE DATABASE 〇△\G
*************************** 1. row ***************************
       Database: 〇△
Create Database: CREATE DATABASE `〇△` /*!40100 DEFAULT CHARACTER SET latin1 */
1 row in set (0.01 sec)
 
mysql>

とりあえず、気味が悪いので、作ったのを全部消しておこう。 ちゃんと消せるといいのだが。。。

mysql> DROP DATABASE 漢字;
Query OK, 0 rows affected (0.00 sec)
 
mysql> DROP DATABASE 〇△□;
Query OK, 0 rows affected (0.00 sec)
 
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)
 
mysql>

やれやれ、ちゃんと消えてくれたようだ。

それにしても、何で文字が欠けてしまうのであろうか。 今のところ、変になるのが分ったのは cp932 だけであるが、 その他でも変になるかも知れない。

トラブルの根は深いかも知れないので、今日はここまでとしよう。


戻る:データベースの作成、確認、削除

次へ:cp932だとデータベース名の漢字が変になる


フィードバック:

Name:
Comment:

There is no comment.

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us