rake db:reset无法填充数据

4

我的环境 -> Ruby 1.9.2 和 Rails v3.0.5

我注意到在 rake db:reset 中有一个奇怪的模式。根据rails源代码,rake db:reset 将执行 => db:drop、db:create 和 db:migrate。 https://github.com/rails/rails/blob/v3.0.5/activerecord/lib/active_record/railties/databases.rake#L159

设置:我的迁移文件之一有 Model.create 语句来填充一些数据(请原谅我,我不是那个把填充数据代码放在这些迁移中的人 :) ..)

情况1:当我手动执行每个步骤时,也就是逐个执行 drop、create 和 migrate 步骤时,那些语句会向表中填充数据。

情况2:当我只运行 rake db:reset 时,模式被正确设置,但数据没有进入数据库。难道 db:reset 跳过了 create/update 语句吗?我已经尝试了几次,以确保我所做的步骤没有错误。我仍然得到这种行为。

这里出了什么问题...?


你能发布你的迁移吗? - David
2个回答

13

我认为你在源代码中阅读了错误的行。按照我的理解:

db:migrate:reset # => [:drop, :create, :migrate]

db:reset # => [:drop, :setup]

因此,db:reset 只会创建表并设置迁移,就像已经运行了它们一样,但实际上并没有运行它们。而db:migrate:reset 实际上会运行每个迁移。


0

我之前也遇到过相同的问题,当时我使用的是3.0.3版本。后来我发现,一些迁移文件被我修改了,但我忘记运行它们(或者其他原因导致没有运行)...所以我现在会首先检查这些文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接