如何删除数据库

时间:2010-01-12 04:17:07

标签: mysql database-administration

我使用了以下语法

drop database filmo; 

并收到以下错误:

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

任何想法..

13 个答案:

答案 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上所做的事情:

  1. 停止MySQL服务
  2. 删除/usr/local/mysql/data
  3. 上的目录

答案 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\Data。就我而言,我收到了“找不到文件夹”错误。

我发现我的数据库的数据文件夹以某种方式被删除了。我想这是用户错误。我添加了一个带有数据库名称的空白文件夹,当我返回 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>;