错误删除数据库(无法rmdir'.test \',错误号:17)


124

基本上,我学会了如何使用“ mysqladmin -u root -p password”命令创建root密码,这些操作都是通过Windows命令编辑器完成的。现在,下一个过程是显示通过使用“ SHOW DATABASES;”获得的默认数据库(信息模式,mysql和测试)。

但是根据这本书,我们必须删除冗余测试文件,并弹出以下错误:

错误删除数据库(无法rmdir'.test \',错误号:17)

使用的命令是 DROP DATABASE test;

我正在使用MYSQL和PHPMYADMIN。任何有关如何正确删除文件的帮助吗?


MySQL用户是否肯定拥有相关数据目录的所有权?
约翰·帕克

更新。我从PHPMYADMIN创建了一个新数据库,并在命令编辑器中使用了该命令,但这次没有弹出错误,它可以正常工作。编辑:Middaparka,我真的还没有碰过那部分。默认情况下,我不知道授予的权限是什么。
Sid

我想新的MySQL版本确实不会删除数据库TEST,而是尝试删除mysql目录/ bin中的“ TEST”文件夹,这只是添加到您的学习过程中的另一种解决方案....
amenko

Answers:


163

数据库由data目录(通常为/var/lib/mysql)下的目录表示,该目录用于存储表数据。

DROP DATABASE语句将删除所有表文件,然后删除代表数据库的目录。但是,它不会删除非表文件,因此无法删除目录。

MySQL无法删除目录时显示错误消息

您实际上可以通过删除数据库目录中的所有剩余文件然后删除目录本身来手动删除数据库。


1
谢谢,Shakti Singh。我通过访问PHPMYADMIN删除了“测试”表,但是我真的很想通过命令编辑器来完成它。我想我尝试了一遍又一遍地删除同一文件,所以出现了错误。我创建了一个新的数据库,并输入了DROP DATABASE命令,它起作用了!
Sid

2
请注意,您实际上只能自己删除该目录如果数据库只有MyISAM表

在我而言,我不得不logout然后login再次,查看数据库了。
Anas Azeem

5
文件到底在哪里?
黑色

我已经在数据库目录中创建了文件。删除这些文件后,我的问题解决了。
zahid19年

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

rm .empty文件删除后,drop database命令成功。

我不知道.empty文件的来源;如前所述,这是一个新的mysql安装。也许在安装过程中出现了问题。


3
请参阅MySQL错误#62443。由于cmake的限制,这是在5.5.11左右引入的MySQL错误。如您所说,一种解决方法是删除data \ test \ .empty
John McCarthy

2
在我的窗户是:C:\ WAMP \ BIN \ mysql的\ mysql5.5.24 \ DATA \测试\
马特恩德雷- Botond

34

转到mysql安装的datadir并手动管理数据库。有可能

/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 2013年

1
谢谢您让我知道目录在哪里!
Sankalp Singha 2014年

为我工作:)
学生

为我工作了尝试rm -R databasename然后重新加载phpmyadmin
Vikas Kandari


12

如果是XAMPP,请执行以下操作:

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

希望这可以帮助。


+1如果在Mac上使用了已安装的XAMPP,则在Mac上效果很好。通过应用程序(已挂载的xampp应用程序)打开终端,然后按照上面的指南进行操作。
鲍比·阿克斯

这再次帮助了我:)
Bobby Ax

8

我只是遇到了WAMP及其附带的phpMyAdmin这个问题。要删除数据库并使错误消失。我进入C:\wamp\bin\mysql\mysql5.5.24\data\并删除了有关数据库的文件夹。

然后,我在phpMyAdmin上刷新了页面,数据库消失了。


4

到目前为止,只是添加到响应中:在Windows 10中,数据文件保存在此处...

C:\ ProgramData \ MySQL \ MySQL服务器[mn] \ data

数据库中每个模式都有目录。您将要进入要删除的架构,手动删除任何多余的文件,然后再次尝试drop命令。

对数据库的任何工作台更改都将存储在此位置。例如,在对一个数据库进行反向工程练习并将更改存储到此位置的.mwb文件中之后,出现了此错误。


1

您可以删除sql目录中的数据。

对我来说,我在Windows 10上使用AMPPS。我去了AMPPs安装目录。对我来说是:

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

因为我已将其安装在辅助驱动器上。

然后刷新您的SQL客户端,您将发现它已消失。


1

您可能需要检查两件事。

1- Database Foleder的权限您要删除的数据库必须与mysql进程具有相同的所有者。

2- 目录必须为空转到mysql数据目录并确认目录为空

之后,连接您的mysql cli并再次运行drop database命令。


1

仔细检查并删除所选数据库中的相应缓存文件,然后删除数据库

首先找到包含所选数据库的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. 如果该行不存在,那么您可能会在[drive]:\ 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

删除数据库时,我遇到了同样的问题(在Mac上为mysql 5.6),出现“无法rmdir ..”错误。留下一个空的数据库目录是不可能摆脱的。感谢@Framework和@Beel提供解决方案。

我首先从(/ Applications / 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文件(ibdfrm文件已被删除)。列出文件以查看其属性(因为所有者已经对文​​件拥有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文件夹的数据库文件夹从另一台服务器复制到了您的服务器。但是您尚未复制以下文件:/ var / lib / mysql / ib_buffer_pool / var / lib / mysql / ibdata1 / var / lib / mysql / ib_logfile0 / var / lib / mysql / ib_logfile1 / var / lib / mysql / ibtmp1因此您可以创建一个新的数据库和表,可以删除它们,但不能删除从另一台服务器复制的数据库,也无法浏览从另一台服务器复制的数据库。所以我也复制了这些文件:一切正常后,ib_buffer_pool,ibdata1,ib_logfile0,ib_logfile1,ibtmp1。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.