我使用了以下 sytanx
drop database filmo;
并得到以下错误:
ERROR 1010 (HY000): Error dropping database (can't rmdir './filmo/', errno: 17)
有任何想法吗..
我使用了以下 sytanx
drop database filmo;
并得到以下错误:
ERROR 1010 (HY000): Error dropping database (can't rmdir './filmo/', errno: 17)
有任何想法吗..
这意味着该目录中有与 MySQL 无关的文件。尽管我对此表示怀疑,但另一个问题是权限不足。您可以从文件系统中删除该目录。
得到同样的错误。这在 Ubuntu 10.04 中为我修复了它:
stop mysql
rm -rf /var/lib/mysql/XXXXX
start mysql
其中 XXXXX 是有问题的数据库名称。
sudo rm -rf /var/lib/mysql/db_production
其中 db_production 是数据库的名称
记得使用“sudo”。
这就是我在 Mac OS X Mavericks 上所做的:
/usr/local/mysql/data
1)rm -rf /var/lib/mysql/data/***
保留数据目录,rm数据内容/
2) 使用
mysql -uxxx -pyyy
$ drop database data;
那么重新创建数据库就可以了。希望它会有所帮助,注意,无论您是否重新启动mysqld ,直接删除数据目录都是无用的。
我已经更改了 mysql 文件夹( windows server c:\xampp\mysql
)的权限并且现在正在工作,我已经创建并删除了数据库,没有任何错误。
这是非常古老的,但要检查的另一件事是数据文件夹。在 Windows 上,应该是 C:\ProgramData\MySQL<Version>\Data。就我而言,我收到“找不到文件夹”错误。
我发现不知何故我的数据库的数据文件夹已被删除。我想这是用户错误。我添加了一个带有数据库名称的空白文件夹,当我返回 DROP 表时,它按预期进行。我花了一段时间才知道发生了什么,但希望这能避免其他人的心痛。
这是一种模拟错误的方法
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)
我遇到了这个问题,它似乎与您的 mysql 用户权限有关。如果确实有效,请尝试由 root 用户执行此操作,以 root 身份使用此命令来授予您的用户的删除权限:
grant drop
execute on *.* to 'your-user-name'@'user-ip';
您对该目录(和父目录)有写权限吗?您可能需要递归地使目录可写(Windows 中的安全选项卡或 nix 中的 chmod)并删除任何非 db 文件,如“Thumbs.db”
当您在 ibdata1 文件(用于 innodb 引擎)中有错误的 TABLESPACE 时,通常会出现该错误。innodb 引擎在 ibdata1 文件中存储一些设置
如果您最近将文件复制/移动到其他服务器或尝试恢复,那么您应该移动 ibdata1 文件,然后您可以删除数据库。我假设您遇到表不存在的问题,现在正在删除数据库?如果是,则停止 mysql 服务,然后删除文件,然后再次创建数据库,这将对您有所帮助。进一步这里这可能会帮助你[错误删除数据库(无法rmdir'.test\',errno:17)
不知道我从哪里得到这个答案(道歉),但是,虽然类似于上面,它有如何找到 mysql 数据目录的附加信息:
mysql -e "选择@@datadir"
我假设这是通用的,并返回 mysql/data 的路径。如果您移动到该目录(unix/linux/macOS 命令):
cd path_to_mysql /数据
您将找到要删除的数据库,在 nix 上可以通过以下方式完成:
sudo rm -rf DB_NAME
在 MacOS X (10.9.5) 上,我不必停止 MySQL,但这在其他平台上可能会有所不同。
drop database <database_name>;