我使用了以下语法
drop database filmo;
并收到以下错误:
ERROR 1010 (HY000): Error dropping database (can't rmdir './filmo/', errno: 17)
任何想法..
答案 0 :(得分:23)
这意味着该目录中的文件与MySQL无关。另一个问题,虽然我怀疑,但权限不足。您可以从文件系统中删除该目录。
答案 1 :(得分:12)
得到同样的错误。这在Ubuntu 10.04中为我修复了它:
stop mysql
rm -rf /var/lib/mysql/XXXXX
start mysql
XXXXX是违规数据库名称。
答案 2 :(得分:7)
sudo rm -rf / var / lib / mysql / db_production
,其中 db_production是数据库的名称
请记住使用“sudo”。
答案 3 :(得分:1)
我已经更改了mysql文件夹(windows server c:\xampp\mysql
)的权限并且现在正在运行,我已经创建并删除了数据库而没有任何错误。
答案 4 :(得分:1)
这就是我在Mac OS X Mavericks上所做的事情:
/usr/local/mysql/data
答案 5 :(得分:1)
1)rm -rf /var/lib/mysql/data/***
保留数据目录,rm数据的内容/
2)使用
mysql -uxxx -pyyy
$ drop database data;
然后可以再次重新创建数据库。 希望它会有所帮助, 注意,直接删除数据dir是没用的,无论你重启mysqld与否。
答案 6 :(得分:1)
这太旧了,但要检查的另一件事是数据文件夹。在 Windows 上,它应该是 C:\ProgramData\MySQL
我发现我的数据库的数据文件夹以某种方式被删除了。我想这是用户错误。我添加了一个带有数据库名称的空白文件夹,当我返回 DROP 表时,它按预期进行。我花了一段时间才弄明白发生了什么,但希望这可以避免其他人的心痛。
答案 7 :(得分:0)
你对该目录(和父目录)有写权限吗?您可能需要以递归方式使目录可写(Windows中的安全选项卡或nix中的chmod)并删除任何非db文件,如“Thumbs.db”
答案 8 :(得分:0)
我遇到了这个问题,它似乎是关于你的mysql用户权限。 尝试使用root用户,如果它确实有效,请使用此命令作为root用户对用户的删除权限:
grant drop
execute on *.* to 'your-user-name'@'user-ip';
答案 9 :(得分:0)
这是一种模拟错误的方法
1.在MySQL数据目录上创建一个目录
mkdir /data/mysql/data/filmo
2.检查最后一项
[root@linux]# ls -ltrh /data/mysql/data/
总用量 173M
-rw-rw---- 1 mysql mysql 48M 4月 17 11:00 ib_logfile1
drwx------ 2 mysql mysql 4.0K 4月 17 11:00 performance_schema
drwx------ 2 mysql mysql 4.0K 4月 17 11:00 mysql
-rw-rw---- 1 mysql mysql 56 4月 18 06:01 auto.cnf
drwxr-xr-x 2 root root 4.0K 4月 18 07:25 backup
-rw-rw---- 1 mysql mysql 19 4月 23 07:29 mysql-bin.index
-rw-rw---- 1 mysql mysql 5 4月 23 07:29 oldboylinux.pid
-rw-rw---- 1 mysql mysql 19K 4月 23 07:29 error.log
-rw-rw---- 1 mysql mysql 76M 4月 23 09:56 ibdata1
-rw-rw---- 1 mysql mysql 48M 4月 23 09:56 ib_logfile0
-rw-rw---- 1 mysql mysql 5.9K 4月 23 10:21 mysql-bin.000001
drwxr-xr-x 2 root root 4.0K 4月 23 10:36 filmo
3.在其中创建转储文件
[root@linux]# mysqldump -uroot -p123456 -B mysql>/data/mysql/data/filmo/dump_file.sql
4.MySQL会相信filmo是一个数据库
[root@linux]# mysql -uroot -p123456 -e"show databases;"
+--------------------+
| Database |
+--------------------+
| information_schema |
| backup |
| filmo |
| mysql |
| performance_schema |
+--------------------+
5.当我放弃这个"数据库"时,这是你的错误
[root@linux]# mysql -uroot -p123456 -e"drop database filmo;"
ERROR 1010 (HY000) at line 1: Error dropping database (can't rmdir './filmo/', errno: 17)
答案 10 :(得分:0)
当你在ibdata1文件中有错误的TABLESPACE(那是用于innodb引擎)时,通常会出现这个错误 innodb引擎存储ibdata1文件中的一些设置
如果您最近将文件复制/移动到其他服务器或尝试恢复,那么您应该移动ibdata1文件,然后您可以删除数据库。 我假设你有问题像表不存在,现在删除数据库? 如果是,那么停止mysql服务然后删除文件,然后再次创建数据库,这将有助于你。 这可能对你有所帮助 [Error Dropping Database (Can't rmdir '.test\', errno: 17)
答案 11 :(得分:0)
我不确定从哪里得到这个答案(道歉)但是,虽然与上面类似,但它还有关于如何找到mysql数据目录的附加信息:
mysql -e“select @@ datadir”
我认为这是通用的,并返回mysql / data的路径。如果移动到该目录(unix / linux / macOS命令):
cd path_to _ mysql / data
您将找到要删除的数据库,在nix上可以通过以下方式完成:
sudo rm -rf DB_NAME
在MacOS X(10.9.5)上我做了不必须停止MySQL,但这在其他平台上可能有所不同。
答案 12 :(得分:-2)
drop database <database_name>;