MySQLエラー [ERROR] Invalid (old?) table or database name ‘lost+found’の対応




投稿日:

先日、使っているMySQLにて以下のエラーを発見。よく分からなかったので調べてみた。

2015-01-22 10:26:31 28821 [ERROR] Invalid (old?) table or database name 'lost+found'


そもそも、lost+found というデータベースって何?

Linuxには、「lost+found」で定義されるディレクトリがあります。これは、fsckでディスクをチェックしたときに作られる、破損ファイルの断片を収めるディレクトリだそうです。

情報引用:Windowsユーザーに教えるLinuxの常識(2):各ディレクトリの役割を知ろう(ルートディレクトリ編) (2/2) – @IT

/lost+found

 fsckでディスクをチェックしたときに作られる、破損ファイルの断片を収めるディレクトリです。ルートディレクトリだけでなく、あちこちにあります。とはいえ、普通のユーザーには、ここに残っている情報から元のファイルを復元するのはまず無理でしょう。/lost+foundディレクトリの内容にこだわるよりも、正常なファイルのバックアップをマメに取っておく方が重要です。

 実は、このディレクトリはファイルシステムのフォーマットにも依存するので、FHS 2.2では規定されていません。

これが、MySQLのdatadir配下にもあることが原因のようです。なぜなのだろう。

原因は、datadirを別ディスクに指定していたことでした。この場合、ドライブの/rootレベルの階層にlost+foundが作成されるので、データベースの1つかと認識をしてしまうようなのです。


で、消してよいのかな?

いや、断片ファイルとなるので消すのは良くなさそうです。



[ERROR] Invalid (old?) table or database name ‘lost+found’ はそのままで良い

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lost+found         |
| mysql              |
| performance_schema |
+--------------------+

lost+found というデータベースがいます。
これですね。害はないことが分かったのでそのままにしておきます。
※もし違っていたら教えてください。

参考:MySQL Bugs: #22615: MySQL Server incorrectly catogorizes the lost+found directory as a database




よく #mysql50#lost+found  と名前がついているものが出るのですが、これは以下が原因の模様。
参考:MySQL5.0から5.1へアップデートしたら#mysql50#って付いた件 | zaru blog