MySQL で、ハイフン付のDB名を扱う[MySQL]
(2009-03-18 10:16:41) by shinoda


mysqladmin で hoge-hoge という名前の DB 作って、そいつを mysql 上で扱おうとしたらエラーが・・・

mysql> GRANT ALL ON hoge-hoge.* TO dbuser@localhost;
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 '-hoge.* TO dbuser@localhost' at line 1

どうも、ハイフンが式として判断されてるのか?コマンドの始まりと判断されているのか?・・・と思い、シングルクォーテーションで囲ってみたけど、

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 ''hoge-hoge'' at line 1

やっぱり駄目。同じエラーだなあ・・・
\ でエスケープしてみたら?

ERROR:
Unknown command '\-'.
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 '\-hoge' at line 1

やっぱり駄目。つーか、エラーが増えてるし。(^^;

結局、バッククォーテーションで囲めばよかった。

mysql> GRANT ALL ON `hoge-hoge.*` TO dbuser@localhost;

こんな感じ。
そうかあ。MySQL じゃ、ハイフンを含んだ DB名を使うときは常にバッククォーテーションで囲まないと駄目なのか。ハイフンを含んだ DB名を使うのって今回が初めてなので知らんかった。(^^;

いちいち面倒なので、ハイフン使うのやめて、DBの名前を hoge_hoge に変えちゃった。
これが一番正解。(笑)


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8