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

时间:2011-01-03 12:34:23

标签: mysql sql phpmyadmin

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

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

  

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

投入使用的命令是DROP DATABASE test;

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

18 个答案:

答案 0 :(得分:146)

数据库由数据目录下的目录表示,该目录用于存储表数据。

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

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

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

答案 1 :(得分:37)

我在Mac上安装了一个新的mysql 5.5时遇到了同样的问题。我试图删除测试模式并得到一条错误消息。 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文件,drop database命令就成功了。

我不知道.empty文件来自哪里;如上所述,这是一个新的mysql安装。也许安装过程出了问题。

答案 2 :(得分:27)

转到mysql安装的datadir并手动运行数据库。它可以是

/usr/local/var/mysql

然后,

rm -R <Your DB name>

要检查安装的datadir,

vim the mysql.server file and find it there.

答案 3 :(得分:22)

对于 phpmyadmin ,转到 xampp \ mysql \ data ,然后只删除数据库文件夹。为我工作!!

答案 4 :(得分:11)

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

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

希望这有帮助。

答案 5 :(得分:7)

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

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

答案 6 :(得分: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

根据结果更改路径

答案 7 :(得分: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资源管理器中键入显式路径

答案 8 :(得分:1)

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

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

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

针对数据库的任何工作台更改都将存储在此位置。例如,我在其中一个数据库上进行了逆向工程练习并保存了存储在此位置的.mwb文件中的更改,从而出现此错误。

答案 9 :(得分:0)

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

答案 10 :(得分: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。

答案 11 :(得分: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删除文件可以干净地删除数据库。

答案 12 :(得分:0)

您可能需要检查两件事。

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

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

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

答案 13 :(得分:0)

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

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

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

因为我将它安装在我的辅助驱动器上。

然后刷新你的SQL客户端,你会发现它已经消失了。

答案 14 :(得分:0)

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

答案 15 :(得分:0)

在删除数据库时,我遇到了同样的问题(mac上的mysql 5.6),并且可以删除rmdir ..&#39; -errors。留下一个空的数据库目录是不可能摆脱的。感谢@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

在此之后删除数据库没有问题

答案 16 :(得分:0)

我的情况是问题是数据库目录中的剩余转储文件。该文件可能是在我一直在进行的备份脚本测试期间生成的。 一旦我手动删除了文件,我就可以删除数据库了。

答案 17 :(得分:0)

在我的情况下,phpMyAdmin我没有在我的数据库下看到任何表格Wamp server但是当我检查C:\wamp\bin\mysql\mysql5.6.12\data下的目录时,我发现了employed.ibd当我手动删除此文件时,我能够drop顺利地phpMyAdmin数据库,没有任何问题。