Rake和Migrate命令后未反映的数据库更改

时间:2014-08-15 07:24:16

标签: ruby-on-rails ruby ruby-on-rails-4

我第一次在Rails应用程序上工作。我正在使用Rails 4.根据教程和书籍,我使用Rails migrate命令生成初始模式。之后我打电话给rake db:migrate。消息显示表已创建,但当我转到db/development.sqlite3时,我根本找不到任何表。

以下是迁移文件的代码

class CreateEvents < ActiveRecord::Migration
  def change
    create_table :events do |t|
      t.string :title
      t.text :summary
      t.integer :total_impacts #added later but does not reflect in db
      t.integer :current_status #added later but does not reflect in db
      t.timestamps
    end
  end
end

我缺少哪些步骤?

2 个答案:

答案 0 :(得分:0)

由于我处于数据库I的早期阶段,因此在db:schema:load文件中进行更改后调用了schema.rb

我猜add_column也应该有效但不确定。

答案 1 :(得分:0)

阅读完评论后,我认为该表已成功创建,但这只是:total_impacts:current_status列的问题。


如果您运行一次迁移,数据库就会知道它已经通过它,并且除非明确指定(rake db:migrate VERSION=...),否则不会再次运行它。

因此,如果您编写迁移,运行它,然后更新它并尝试再次运行它,您刚刚添加的内容(如新列)将不会出现在您的数据库中(因为迁移已经从数据库的角度来看)。

如果您在运行迁移后意识到忘了一些事情,那么您有两种选择:

  • 您可以为要添加/删除的内容编写另一个迁移并运行它。 (简单的东西)。
  • 您可以回滚迁移(播放down部分),编辑并再次运行(播放up部分)。根据您何时意识到您的错误(已经添加了与该迁移相关的一些数据等等),这个可能会有点棘手。