删除数据库时出错(Can’t rmdir’. test’,errno: 17)

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

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

删除数据库时出错(Can’t rmdir’. test’,errno: 17)

使用的命令是 DROP DATABASE test;

我使用的是 MYSQL 和 PHPMYADMIN。有没有关于如何删除文件没有错误的帮助?

283604 次浏览

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

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

当 MySQL 无法删除目录时,它会显示一条错误消息

通过删除数据库目录中的任何剩余文件,然后再删除目录本身,可以手动删除数据库。

我在 Mac 上新安装 mysql 5.5时遇到了同样的问题。我试图删除测试模式,但是得到了一个 errno 17消息。Errno 17是由一些 posx os 函数返回的错误,该函数指示文件存在于不应该存在的位置。在 data 目录中,我发现了一个奇怪的文件”。空”:

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 了. void 文件,投放数据库命令就成功了。

我不知道。这是一个新的 mysql 安装。也许在安装过程中出了问题。

对于 Phpmyadmin,转到 Xampp mysql 数据并简单地删除数据库文件夹。对我有用! !

转到 datadir * 进行 mysql 安装并手动 rm 数据库

/usr/local/var/mysql

然后,

rm -R <Your DB name>

备注:

检查 datadir 是否安装,

vim the mysql.server file and find it there.

我只是遇到了这个问题与 WAMP 和 phpMyAdmin 随之而来。删除数据库并消除错误。我进入 C:\wamp\bin\mysql\mysql5.5.24\data\删除了有问题的数据库的文件夹。

然后我刷新了 phpMyAdmin 的页面,数据库就不见了。

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

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

希望这个能帮上忙。

在我的情况下,我没有看到任何表在我的数据库下的 phpMyAdmin我正在使用 Wamp server,但当我检查目录下的 C:\wamp\bin\mysql\mysql5.6.12\data我发现这个 employed.ibd当我删除这个文件时,我能够从 phpMyAdmin的数据库顺利没有任何问题。

我的情况下,问题是数据库目录中的残留转储文件。该文件可能是在我一直在做的备份脚本测试期间生成的。 一旦我手动删除文件,然后我可以删除数据库。

我有同样的问题(在 mac 上 mysql 5.6)与“ can’t 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 然后是 Chmod

sudo rm -rf test/NOTEMPTY

在那之后删除数据库就没问题了

只要去数据目录在我的案例路径是“ wamp bin mysql mysql5.6.17 data”在这里你会看到所有的数据库文件夹只要删除这个你的数据库文件夹的数据库会自动下降:)

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

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

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

因为我把它安装在我的备用硬盘上了。

然后刷新您的 SQL 客户端,您将看到它消失了。

你可能需要检查两件事。

1-数据库文件夹的许可要删除的数据库的所有者必须与 mysql 进程的所有者相同。

2-目录必须为空转到 mysql 数据目录并验证该目录为空

然后连接 mysql cli 并再次运行 drop database 命令。

只是添加到目前为止的回应: 在 Windows10中,数据文件保存在这里..。

C: ProgramData MySQL MySQL Server [ m.n ] data

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

任何针对数据库的工作台更改都将存储在此位置。例如,我在我的一个数据库中进行了一个逆向工程练习,并将存储在。在这个位置的 mwb 文件。

完成这一步并删除选定数据库中相应的缓存文件,然后可以删除数据库

首先找到包含所选数据库的 MySQL 数据目录

Linux

  • 打开 MySQL 的配置文件: less/etc/my.cnf
  • 搜索术语“ datadir”:/datadir

  • 如果存在,它将突出显示一行内容为: datadir = [ path ]

  • 您还可以手动查找该行。通常可以在[ mysqld ]的节标题下找到它,但不一定非要在那里找到它。

  • 如果该行不存在,那么 MySQL 将默认为:/var/lib/MySQL。

窗户 1. 将 MySQL 的配置文件打开到记事本: my.ini 中

Ini 将位于 MySQL 程序文件夹中,该文件夹位于它被安装的位置。如果没有安装 MySQL,那么使用 Windows 的“搜索”功能查找 my.ini。您也可以通过浏览[ drive ] : 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 资源管理器中键入显式路径

我遇到了这个问题,当我检查数据库目录时,发现有许多 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删除文件可以干净地删除数据库。

这是因为您可能已经将/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。

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

根据结果改变路径

任何来自 Manjaro/Arch 的用 PHP8安装 XAMPP 然后降级到7.4的人都会得到这个错误。要修复这个问题,只需以 Thunar 作为 root 用户转到/opt/lampp/var/mysql/,然后删除具有相同数据库名称的数据库文件,数据库就应该消失。可以使用 PhpMyAdmin 获取数据库名称。