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
関連リンク
前回の最後に、作成できたデータベース「元帳」を 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>
前回とは表示の形式を変更した。
この「元帳」データベースを作成するために入力したSQLは、
mysql> CREATE DATABASE 元帳; Query OK, 1 row affected (0.00 sec)
であった。 SHOW CREATE DATABASE の表示結果をよーく見ると、ちょっとだけ違う。
元帳の両側にクォートがあるようだ。
一度削除してから、クォートで囲った元帳で作りなおしてみよう。
mysql> DROP database 元帳; Query OK, 0 rows affected (0.04 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>
ダメだった。
今は、直接入力してしまったので、今度は SHOW CREATE DATABASE の 出力をコピー&ペーストすることで作ってみよう。
mysql> CREATE DATABASE `元帳`; Query OK, 1 row affected (0.00 sec) mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | | 元帳 | +--------------------+ 4 rows in set (0.00 sec) mysql>
今度はできちゃった。
さて、何が違うのだろうか。 ちゃんと調べるためには、16進数で表示するに限る。 SHOW CREATE TABLE で表示された「`元帳`」を クォートを含めてHEX()に入れてみよう。
mysql> SELECT HEX(`元帳`); ERROR 1054 (42S22): Unknown column '元帳' in 'field list' mysql>
エラーになってしまった。「`」はどうやら普通のクォートではないらしい。
では、これを更に、「"」で囲ってみよう。
mysql> SELECT HEX("`元帳`");
+------------------+
| HEX("`元帳`") |
+------------------+
| 60E58583E5B8B360 |
+------------------+
1 row in set (0.06 sec)
mysql>
今度はうまくいった。 最初と最後が 60 なので、これは バッククォート、逆ダッシュである。 英語では、 backtick(バックティック)と言うらしい。
ということで、今回は、
データベース名は、backtick ( ` ) で囲むべきなのだろうか?
ということが予測できた。(やれやれ)
フィードバック:
Kelley Hogan: (Fri May 1 18:22:18 2009
)