データベースの削除エラー(rmdir '.test \'を実行できません、エラー番号:17)


124

基本的に、「mysqladmin -u root -p password」コマンドを使用してrootパスワードを作成する方法を教えられましたが、これはすべてWindowsコマンドエディターで行われました。次に、次のプロセスは、「SHOW DATABASES;」を使用して達成されたデフォルトのデータベース(info。schema、mysql、およびtest)を表示することでした。

しかし、本によると、冗長なテストファイルを削除する必要があり、次のエラーがポップアップ表示されます。

データベースの削除エラー(rmdir '.test \'を実行できません、エラー番号:17)

使用するコマンドは DROP DATABASE test;

MYSQLとPHPMYADMINを使用しています。エラーなしでファイルをドロップする方法に関するヘルプはありますか?


MySQLユーザーは関連するデータディレクトリの所有権を持っていますか?
ジョンパーカー

更新。PHPMYADMINから新しいデータベースを作成し、コマンドエディターでコマンドを使用しましたが、今回はエラーが発生することなく動作しました。編集:Middaparka、私は本当にその部分にはまだ触れていません。デフォルトでは、どのような権限が付与されているのかわかりません。
シド

私は新しいMySQLのバージョンは本当にこれが.....あなたの学習プロセスへ追加するために、あなたのmysqlディレクトリ/ binにフォルダ「TEST」を削除そのちょうど別の解決策を試してみてください代わりに、データベースTESTを削除しないと思います
amenko

回答:


163

データベースは、データディレクトリ(通常は/var/lib/mysql)の下のディレクトリで表され、ディレクトリはテーブルデータの格納用です。

このDROP DATABASEステートメントは、すべてのテーブルファイルを削除してから、データベースを表すディレクトリを削除します。ただし、テーブル以外のファイルは削除されないため、ディレクトリを削除することはできません。

MySQLがディレクトリを削除できない場合、エラーメッセージを表示します

データベースディレクトリに残っているファイルを削除してから、ディレクトリ自体を削除することで、データベースを手動で削除できます。


1
おかげで、シャクティシン。PHPMYADMINにアクセスして「test」のテーブルを削除しましたが、コマンドエディターを使用してそれを実行したかったのです。私は同じファイルを何度も削除しようとしたので、エラーが発生したと思います。新しいDBを作成し、DROP DATABASEコマンドを入力しました。
シド

2
データベースのみMyISAMテーブルを持っている場合、あなたが本当に唯一のディレクトリに自分自身を削除できることに注意してください

私の場合、データベースが表示されないことを確認するためにlogoutlogin何度も何度も何度も何度も繰り返したことがあります。
Anas Azeem 2013年

5
ファイルはどこにあるのですか?
ブラック

データベースディレクトリにファイルを作成しました。これらのファイルを削除した後、問題は解決しました。
zahid

37

Macにmysql 5.5を新しくインストールすると、同じ問題が発生しました。テストスキーマを削除しようとすると、errno 17メッセージが表示されました。errno 17は、あるべき場所にファイルが存在することを示す一部のposix os関数によって返されるエラーです。データディレクトリで、奇妙なファイル「.empty」を見つけました。

sh-3.2# ls -la data/test
total 0
drwxr-xr-x   3 _mysql  wheel  102 Apr 15 12:36 .
drwxr-xr-x  11 _mysql  wheel  374 Apr 15 12:28 ..
-rw-r--r--   1 _mysql  wheel    0 Mar 31 10:19 .empty

.emptyファイルをrmすると、drop databaseコマンドは成功しました。

.emptyファイルの出所がわかりません。前述のように、これは新しいmysqlのインストールでした。おそらく、インストールプロセスで問題が発生しました。


3
MySQL Bug#62443を参照してください。これはcmakeの制限により5.5.11前後に導入されたMySQLのバグです。あなたが言ったように、回避策はdata \ test \ .emptyを削除することです
John McCarthy

2
私にとってWindowsではそれはC:\ wamp \ bin \ mysql \ mysql5.5.24 \ data \ test \でした
Máthéエンドレ-Botond

34

mysqlインストールのdatadirに移動し、データベースを手動でrmします。かもね

/usr/local/var/mysql

そして、

rm -R <Your DB name>

インストールのdatadirを確認するには、

vim the mysql.server file and find it there.

7
私はmysql 5.5.34-0ubuntu0.13.04.1でlinux mintを実行しており、/ var / lib / mysqlに保存しています。ディストリビューションによって異なると思います。
Craig Schmidt

1
ディレクトリの場所を教えてくれてありがとう!
Sankalp Singha 14

私のために働く:)
瞳孔

私のために働いたrm -R databasenameを試してphpmyadminをリロードする
Vikas Kandari


12

XAMPPの場合は、次の手順を実行します。

cd /opt/lampp/var/mysql;
sudo su;
rm -rf test;

お役に立てれば。


+1マウントされたXAMPPを使用している場合、これはMacでうまく機能します。アプリケーション(マウントされたxamppアプリ)からターミナルを開き、上記のガイドに従います。
Bobby Ax

これは私を再び助けてくれました:)
ボビーアックス

8

私はWAMPとそれに付属するphpMyAdminでこの問題に遭遇しました。データベースを削除してエラーを解消するには。入ったC:\wamp\bin\mysql\mysql5.5.24\data\し、問題のデータベースのフォルダを削除しました。

次に、phpMyAdminでページを更新しましたが、データベースはなくなりました。


4

これまでの応答に追加するだけです:Windows 10では、データファイルはここに保持されます...

C:\ ProgramData \ MySQL \ MySQL Server [mn] \ data

データベース内のスキーマごとにディレクトリがあります。削除しようとしているスキーマの内部に移動し、不要なファイルを手動で削除してから、dropコマンドを再試行してください。

データベースに対するワークベンチの変更はすべてこの場所に保存されます。たとえば、データベースの1つでリバースエンジニアリングを実行し、この場所の.mwbファイルに格納される変更を保存すると、このエラーが発生しました。


1

sqlディレクトリのデータを削除できます。

私はWindows 10でAMPPSを使用していました。AMPPのインストールディレクトリに移動しました。私にとっては:

D:\Program Files (x86)\Ampps\mysql\data

セカンダリドライブにインストールしているためです。

次に、SQLクライアントを更新すると、クライアントがなくなっていることがわかります。


1

2つの点を確認する必要がある場合があります。

1- Database Folederの権限削除するデータベースには、mysqlプロセスと同じ所有者が必要です。

2- ディレクトリは空である必要があります mysqlデータディレクトリに移動し、ディレクトリが空であることを確認します

その後、mysql cliを接続し、drop databaseコマンドを再度実行します。


1

これを実行し、選択したdb内の対応するキャッシュファイルを削除してから、データベースを削除できます

まず、選択したDBを含むMySQLデータディレクトリを見つけます

Linux

  • MySQLの構成ファイルを開きます:less /etc/my.cnf
  • 「datadir」という用語を検索します:/ datadir

  • 存在する場合は、次の行を強調表示します。datadir = [path]

  • その行を手動で探すこともできます。通常は[mysqld]の見出しの下にありますが、必ずしもそこにある必要はありません。

  • その行が存在しない場合、MySQLはデフォルトで/ var / lib / mysqlになります。

Windows 1. MySQLの設定ファイルをメモ帳に開きます:my.ini

my.iniはMySQLプログラムフォルダーにあります。これは、インストールされた場所にあります。MySQLをインストールしていない場合は、Windowsの「検索」機能を使用してmy.iniを探します。[ドライブ]:\ Program Files \ MySQL \ MySQL Server 5.5を参照して手動で検索することもできます。

  1. メモ帳で検索を実行して、「datadir」という用語を見つけます。

  2. 存在する場合は、次の行を強調表示します。datadir = [path]

  3. その行を手動で探すこともできます。通常は[mysqld]の見出しの下にありますが、必ずしもそこにある必要はありません。

  4. その行が存在しない場合、おそらく[ドライブ]:\ ProgramData \ MySQL \ MySQL Server 5.5 \ dataの下にあります。

注:「ProgramData」フォルダが非表示になっている可能性があります。Windowsエクスプローラに明示的なパスを入力する必要がある場合があります


1
mysql -s -N -username -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'

このコマンドは、MySQLの内部information_schemaデータベースからのみ値を選択し、表形式の出力と列ヘッダーを無効にします。

Linuxでの出力[私の結果]:

/var/lib/mysql

または

mysql> select @@datadir;

MYSQL CLI

その後

cd /var/lib/mysql && rm -rf test/NOTEMPTY

結果に基づいて経路を変更する


0

私の場合は、上の私のデータベースの下で任意のテーブルを見ていないphpMyAdmin私が使用していますWamp server、私は下のディレクトリをチェックするときにはC:\wamp\bin\mysql\mysql5.6.12\data、私これを見つけたemployed.ibd私は、このファイルを手動で削除したとき、私はすることができたdropからデータベースphpMyAdmin何の問題もなくスムーズに。


0

私の場合、問題はデータベースディレクトリに残っているダンプファイルでした。そのファイルは、おそらく私が取り組んでいたバックアップスクリプトのテスト中に生成されたものと思われます。ファイルを手動で削除したら、データベースを削除できます。


0

データベースをドロップすると、「ca n't rmdir ..」エラーで同じ問題(Macのmysql 5.6)が発生しました。空のデータベースディレクトリを残すことはできません。ソリューションを提供してくれた@Frameworkと@Beelに感謝します。

最初にターミナルからdbディレクトリを削除しました(/アプリケーション/ XAMPP / xamppfiles / var / mysql)。

さらにdbを削除するために、空のテストファイルも削除しました。私の場合、ファイルはNOTEMPTYと呼ばれていましたが、まだ0が含まれています。

sudo ls -al test
total 0
drwxrwx---   3 _mysql  _mysql  102 Mar 26 16:50 .
drwxrwxr-x  18 _mysql  _mysql  612 Apr  7 13:34 ..
-rw-rw----   1 _mysql  _mysql    0 Jun 26  2013 NOTEMPTY

最初にChmod、次に

sudo rm -rf test/NOTEMPTY

その後データベースをドロップしても問題ありません


0

パスが「wamp \ bin \ mysql \ mysql5.6.17 \ data」の場合、データディレクトリに移動するだけで、すべてのデータベースフォルダーが表示されます。これを削除するだけです。データベースフォルダーは自動的に垂下します:)


0

この問題に遭遇し、データベースディレクトリをチェックアウトしたところ、いくつかのexpファイルがありました(ibdおよびfrmファイルは削除されていました)。ファイルをリストしてそれらの属性を確認します(所有者はすでにファイルに対するrw特権を持っているため)

lsattr *.exp
-------------e-- foo.exp
-------------e-- bar.exp

マンページは言う

       The  'e'  attribute  indicates that the file is using extents for mapping the blocks on disk.
       It may not be removed using chattr(1).

実際にはchattr -eこれらのファイルを作成できますが、mysqlではデータベースを削除できません。rmただし、を使用してファイルを削除すると、データベースを完全に削除できます。


0

/ var / lib / mysqlフォルダーのデータベースフォルダーを別のサーバーからサーバーにコピーした可能性があるためです。ただし、これらのファイルはコピーしていません。ドロップできる新しいデータベースとテーブルを作成できますが、別のサーバーからコピーしたデータベースをドロップすることはできません。また、別のサーバーからコピーした同じデータベースを探索することもできません。したがって、そのファイルもコピーしました:ib_buffer_pool、ibdata1、ib_logfile0、ib_logfile1、ibtmp1その後、すべてが機能しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.