我正在使用 Rails v2.3.2 与 MySQL v5.1 和 mysql2 gem。
我在以下方法中运行以下rake任务:
def db_operation
Rake::Task['db:drop'].invoke #this one does not work
Rake::Task['db:create'].invoke
Rake::Task['db:migrate'].invoke
...
end
但 Rake::Task['db:drop'].invoke
不会丢弃我的数据库**,并且没有错误消息让我无法找到原因。
然后:
我转到 MySQL命令行来执行“DROP DATABASE my_db;
”,它引发了以下错误消息:
ERROR 1010 (HY000): Error dropping database (can't rmdir './my_db/', errno: 17)
之后: 我再次运行代码,数据库出人意料地被删除......
发生了什么事?为什么我的rake db:drop
不会丢弃数据库,但是在我在MySQL命令行上运行drop命令并再次运行rake db:drop后,它会被丢弃? (当我在MySQL命令行上运行时出错)
P.S。
rake db:create
和rake db:migrate
正在毫无问题地工作。
答案 0 :(得分:1)
请参阅此LINK
你可能在/ var / lib / mysql / my_db /中有mysql没有创建的文件。 尝试列出这些文件,看看有什么。尝试将任何内容移动到临时目录(如果您确定不需要它们,则删除),然后再试一次。