こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

TABLE名に使えない文字列をエスケープするには?

aaa.bbbのように、TABLE名に.(ドット)を使いたいのですが、このままだとエラーが発生してしまいます。

mysql> CREATE TABLE aaa.bbb (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
abc varchar(16),
xyz varchar(16),
PRIMARY KEY (id)
);
ERROR 1049 (42000): Unknown database 'aaa'

.(ドット)をエスケープするにはどうすればよいでしょうか?
ちなみに\(バックスラッシュ)を.(ドット)に前置してもエラーになってしまいます。

投稿日時 - 2009-05-06 14:41:35

QNo.4935923

困ってます

質問者が選んだベストアンサー

まず最初に、MySQL 5.1.6より前のバージョンでは「.」はテーブル名に使用できません。

8.2. 識別子
http://dev.mysql.com/doc/refman/5.1/ja/identifiers.html



MySQL 5.1.6以降なら使用できるはずです。
ただしテーブル名は引用符の「`」(バッククォート)で囲う必要があります。

CREATE TABLE `aaa.bbb` (
`id` MEDIUMINT NOT NULL AUTO_INCREMENT,
`abc` varchar(16),
`xyz` varchar(16),
PRIMARY KEY (id)
);

投稿日時 - 2009-05-06 15:15:44

お礼

ありがとうございました。

私のマシンに現在入っているMySQLはバージョンが5.0.XXなので、うまく行きませんが、バージョンアップして試してみようと思います。

投稿日時 - 2009-05-06 16:16:20

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

aaa.bbbってのはaaaデータベースのbbbテーブルへアクセスすると認識されます。
そんなことを無理やりやってもトラブルの元なのでやらないほうがいいです。

投稿日時 - 2009-05-07 01:00:41

お礼

ご忠告どうもありがとうございました。

投稿日時 - 2009-05-20 22:37:52