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

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

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

rootユーザーとしてmysqlに接続しています。シェルコマンドのようにバックスラッシュを追加してみました。

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

これはうまくいきません

答え1

オブジェクト名にはバックティックを使用します。個々の文字をエスケープするには、バックスラッシュを使用しないでください。

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

答え2

~のため特定の問題この問題では、データベースは、使用中のリカバリ用に予約された特別なディレクトリを持つファイルシステム#mysql50#lost+foundにマウントされた成果物です。/var/lib/mysqllost+foundfsck

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

ignore-db-dir=lost+found

そしてデータベースサーバーを再起動してください。

参考資料:MySQL/マリアデータベース

関連情報