孤独求学人
ERROR 1010 (HY000): Error dropping database (can't rmdir './******', errno: 39)
2018-3-11 杜世伟

今天操作数据库出现以下错误提示:

ERROR 1010 (HY000): Error dropping database (can't rmdir './******', errno: 39)

字面意思是说删除数据失败,不能删除目录./******

数据库版本信息:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.2    |
+-----------+
1 row in set (0.00 sec)

mysql> use 数据库名;
Database changed
mysql> show tables;
Empty set (0.00 sec)
发现数据库中已经没有表了,这个时候为什么drop database不成功呢?奇怪了......
通过以下命令查看数据库文件所在目录:
mysql> select @@datadir;
+--------------+
| @@datadir    |
+--------------+
| /data/mysql/ |
+--------------+
这个时候查看ls -al /data/mysql/数据库名,发现文件下有很多表文件,如果想删除数据库成功,如果把此目录下的文件删除
rm -rf /data/mysql/数据名/*

然后进行数据库中执行:
DROP DATABASE IF EXISTS `数据库名`;//if exists 判断数据库是否存在,不存在也不产生错误

这个时候通过
mysql>show databases;
查看数据库的时候发现此数据库已经不存在了

至此问题解决了........

解决方案:当执行DROP DATABASE语句,系统会查找数据库中存在的数据表!
如果目录中有数据库中不存在的表,则会删除失败。需要手动删除目录中所有的文件,重新运行DROP DATABASE

参考:
https://blog.csdn.net/kenera/article/details/18660895
https://blog.csdn.net/gglong/article/details/51542865