【MySQLエラーの原因究明】データベース削除エラー「Error Dropping Database」の謎を徹底解剖!解決策もバッチリ解説
"Error Dropping Database (Can't rmdir '.test', errno: 17)" エラーの解決方法
原因
このエラーが発生する主な原因は次のとおりです。
- データベースディレクトリ内に残っているファイル: MySQL が削除できないファイルがデータベースディレクトリ内に残っている可能性があります。これは、SELECT ... INTO OUTFILEコマンドを使用してファイルにエクスポートされたデータファイルなど、さまざまな原因で発生する可能性があります。
- データベースが使用されている: データベースが現在使用されている場合、MySQL はそれを削除できません。すべての接続を終了してから削除を試してください。
- ファイルアクセス権: MySQL ユーザーにデータベースディレクトリとその内容への十分なアクセス権がない可能性があります。
解決策
このエラーを解決するには、次の手順を実行します。
残っているファイルを削除する
データベースディレクトリに移動し、残っているファイルを削除します。データベースディレクトリの場所は、MySQL の設定ファイル (my.cnf) に記載されています。
datadir = /path/to/mysql/data
データベースの名前は、削除しようとしているデータベースと同じであることに注意してください。
データベースを削除する
残りのファイルが削除されたら、次のコマンドを使用してデータベースを削除できます。
DROP DATABASE test;
権限を確認する
MySQL ユーザーにデータベースディレクトリとその内容への十分なアクセス権があることを確認してください。次のコマンドを使用して、データベースディレクトリとその内容に対する現在の権限を確認できます。
ls -ld /path/to/mysql/data/test
出力例:
drwxr-xr-x 2 mysql mysql 4096 Jun 23 14:54 test
この出力では、mysql ユーザーがデータベースディレクトリとその内容に対して読み取り、書き込み、実行の権限を持っています。
MySQL サーバーを再起動する
一部の場合、MySQL サーバーを再起動すると問題が解決する場合があります。
phpMyAdmin を使用してデータベースを削除することもできます。phpMyAdmin にログインし、削除したいデータベースに移動してから、「削除」ボタンをクリックします。
予防策
- データベースを削除する前に、データベース内に残っているファイルがないことを確認してください。
- データベースが使用されていないことを確認してから削除してください。
# データベースディレクトリに移動
cd /path/to/mysql/data
# 残っているファイルを削除
rm -rf test
# MySQLに接続
mysql -u root -p
# データベースを削除
DROP DATABASE test;
# データベースディレクトリとその内容に対する現在の権限を確認
ls -ld /path/to/mysql/data/test
# MySQL サーバーを停止
sudo systemctl stop mysql
# MySQL サーバーを起動
sudo systemctl start mysql
phpMyAdmin を使用する
- phpMyAdmin に Web ブラウザからログインします。
- 削除したいデータベースを選択します。
- 「削除」ボタンをクリックします。
注意事項
- 上記のコードを実行する前に、必ずデータベースをバックアップしてください。
- root ユーザーとしてコマンドを実行する場合は、十分に注意してください。
- MySQL サーバーを再起動すると、現在接続しているすべてのセッションが切断されます。
その他の解決方法
mysqladmin コマンドを使用して、コマンドラインからデータベースを削除することもできます。次のコマンドを実行します。
mysqladmin -u root -p drop database test
安全モードで MySQL を起動すると、一部のファイルがロック解除され、削除できるようになる場合があります。次のコマンドを実行します。
sudo systemctl start mysql --safe-mode
MySQL を安全モードで起動したら、上記の手順でデータベースを削除してみてください。削除できたら、次のコマンドを実行して通常のモードに戻します。
sudo systemctl restart mysql
データベースディレクトリに移動し、データベースファイル (test.ibd など) を手動で削除することもできます。ただし、この方法は 最後の手段 としてのみ使用してください。データベースファイルを誤って削除すると、データ損失につながる可能性があります。
サポートに問い合わせる
上記の方法で問題が解決しない場合は、MySQL サポートに問い合わせてください。
mysql sql phpmyadmin