Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
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 だけであるが、 その他でも変になるかも知れない。
トラブルの根は深いかも知れないので、今日はここまでとしよう。
フィードバック:
There is no comment.