我有一个充满数据的Ruby on Rails开发数据库。我想删除所有东西,重建数据库。我正在考虑使用类似的东西:

rake db:recreate

这可能吗?


当前回答

您可以手动执行:

rake db:drop
rake db:create
rake db:migrate

或者只是rake db:reset,它将运行上述步骤,但也将运行您的db/seeds。rb文件。

一个额外的细微差别是rake db:reset直接从您的模式加载。Rb文件,而不是再次运行所有的迁移文件。

你的数据在任何情况下都会消失。

其他回答

要删除一个特定的数据库,你可以在rails控制台中这样做:

$rails console
Loading development environment
1.9.3 > ActiveRecord::Migration.drop_table(:<table_name>)
1.9.3 > exit

然后再次迁移DB

$bundle exec rake db:migrate 

我使用:

删除数据库。 Rails db:create根据config/database.yml创建数据库

以上命令可能替换为rails db:reset。

不要忘记运行rails db:migrate来运行迁移。

今天我对rails模式做了一些更改。我意识到我需要在一个层次结构中增加两个模型,并删除其他一些模型。需要对模型和控制器进行许多小的更改。

我添加了两个新模型并创建了它们,使用:

rake db:migrate

然后我编辑模式。rb文件。我手动删除了不再需要的旧模型,根据需要更改外键字段,只是重新排序了一下,让它对我来说更清楚。我删除了所有的迁移,然后通过以下方式重新运行构建:

rake db:reset

它工作得很完美。当然,所有的数据都必须重新加载。Rails意识到迁移已经被删除,并重置了高水位标记:

-- assume_migrated_upto_version(20121026094813, ["/Users/sean/rails/f4/db/migrate"])

您可以手动执行:

rake db:drop
rake db:create
rake db:migrate

或者只是rake db:reset,它将运行上述步骤,但也将运行您的db/seeds。rb文件。

一个额外的细微差别是rake db:reset直接从您的模式加载。Rb文件,而不是再次运行所有的迁移文件。

你的数据在任何情况下都会消失。

根据你想要的,你可以使用…

rake db:创建

从config/database中从头构建数据库。yml,还是……

rake db:模式:负载

根据您的模式从头构建数据库。rb文件。