あいしんくいっとオススメ商品レビュー

MariaDBでデータベース削除出来ない!?-(ハイフン)を含むDB名は要注意!

本記事対象
MariaDBでデータベース削除出来なくてお困りの方

ども。あいしんくいっと(@ithinkitnet)です。

MariaDBで不要になったDBを削除しようとしたところ、以下のエラーが。

MariaDBでDB削除エラー
MariaDB [(none)]>drop database server-world;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''server-world'' at line 1

ithinkit

はて?データベースがエラーで削除出来ない。

さて、どうすれば良いのでしょうか。

データベース削除エラー「ERROR 1064 (42000)」の原因

エラー「ERROR 1064 (42000)」で調べてみたところ、同様の事象を体験されている方が。

が、質問者に対する回答が面白かった。

質問者:
mysqlの以下のエラーを解消したく投稿しました。
mydb02は存在していますが、削除ができませんでした。
どなたか削除方法をお聞かせいただけると幸いです。
宜しくお願いいたします。
mysql> drop database mydb01;
Query OK, 0 rows affected (0.01 sec)
mysql> dorp database mydb02;
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 ‘dorp database mydb02’ at line 1

回答者:
dorp
ではなく
drop
では?

mysqlでのERROR 1064 (42000)を解消したい

笑。この方はdropの綴り間違い。ただ、こちらはキチンと「drop」としている。

ithinkit

うーん。何が原因なんだろう。困った困った。。

ハイフン付きのデータベースはバッククォートで括る必要あり

色々調べているうち、データベース名に”-(ハイフン)”を含める場合はバッククォートでDB名を括る必要があるということが判明。

さっそく、DB名をバッククォートで括って削除してみると、

バッククォートで括ってDB削除
MariaDB [(none)]> drop database `server-world`;
Query OK, 16 rows affected (0.07 sec)

あっさり削除することが出来た!

ちなみに「-(ハイフン)」を含むDBを作成する場合も同様にバッククォートで括る必要がある模様。

ハイフンを含むDB作成
MariaDB [(none)]> create database hello-world;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '-world' at line 1
MariaDB [(none)]> create database `hello-world`;
Query OK, 1 row affected (0.00 sec)

ハイフンを含むDB名で作成・削除する場合はバッククォートで括る必要がある。

MEMO
そもそも「-(ハイフン)」を含むDBをどうやって作成したのかは謎・・・

ithinkit

MariaDBだけでなく、MySQLでも同様なので気を付けましょう!

以上、あいしんくいっとでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)