db:migrate无效

时间:2011-01-04 20:36:22

标签: ruby-on-rails


如果我编辑我的shema,并运行db:migrate数据库没有更改,但如果我清除版本0,并调用迁移它的工作,但我丢失了所有数据库数据。
怎么了?

3 个答案:

答案 0 :(得分:4)

这就是db:migrate的工作方式。它在数据库中维护一个名为schema_migrations的表,用于跟踪迁移时间戳(即,如果您的文件被称为20090807152224_create_widgets.rb20090807152224部分是时间戳 - 以及将要被添加到您的schema_migrations表中。

您不应该手动修改schema.rb文件 - 该文件会因db:migrate而自动生成。

rails中的想法是,如果您想对架构进行更改,那么您将生成新的迁移并使用然后运行{ {1}}(因此,会相应地更新db:migrate文件。)

答案 1 :(得分:0)

当您说您正在更新架构时,这是否意味着您正在更新db / schema.rb文件或实际迁移?

如果您要更新schema.rb文件,则应注意它将无效,因为该文件是自动生成的。

请参阅文件顶部的评论:

# This file is auto-generated from the current state of the database. Instead of editing this file, 
# please use the migrations feature of Active Record to incrementally modify your database, and
# then regenerate this schema definition.

答案 2 :(得分:0)

听起来您正在更改迁移文件。

请勿更改迁移文件。添加新的。您可以进行更改的迁移,例如列的类型。有时候更改旧迁移可能会有所帮助,但除非您知道后果,否则不要这样做。正如其他人所提到的,也不要改变架构,但我认为你没有这样做。