web-dev-qa-db-ja.com

名前にメタ文字が含まれるデータベースを削除する方法

名前にメタ文字を含むデータベースを削除する方法。データベース名は#mysql50#lost+found

私はrootユーザーとしてmysqlに接続しています。シェルコマンドのように円記号を付けようとしました。

MariaDB [(none)]> DROP DATABASE '\#mysql50\#lost\+found' ;
ERROR 1064 (42000): You have an error in your SQL syntax;

動かない

2
dubis

オブジェクト名にはバッククォートを使用します。単一の文字をエスケープするためのバックスラッシュではありません:

mysql> drop database `#really-bad+name`;
Query OK, 0 rows affected (0.00 sec)
3
DopeGhoti

問題の固有の問題の場合、データベース#mysql50#lost+foundは、(おそらく)/var/lib/mysqlにマウントされたファイルシステムからのアーティファクトです。 fsckを使用する場合の回復用に予約された特別なlost+foundディレクトリ。

したがって、このディレクトリは、MariaDBに無視するように指示して、そのままにしておく必要があります。 /etc/my.cnfまたは他の同様の場所に、以下を追加します。

ignore-db-dir=lost+found

データベースサーバーを再起動します。

参照: MySQL / MariaDB

0
A.B