Jac*_*oge 30 rake activerecord ruby-on-rails rails-migrations ruby-on-rails-3
我今天制作了一个新的Rails 3应用程序,添加了一个简单的迁移,并且出于某种原因,当我执行rake db:migrate时没有任何反应.它只是暂停几秒钟,然后返回到命令提示符,没有任何错误或任何错误.Schema.rb和数据库保持空白.
什么想法可能会发生什么?我做了很多应用程序,从来没有遇到过这个问题.一切都是完全标准的设置.
tad*_*man 64
迁移不会运行的原因有几个,但最常见的是系统已经认为您定义的所有迁移都已经运行.
每次迁移都会在表中创建一个条目,schema_migrations
其中的version
列对应于标识号.如果要强制迁移重新运行,通常可以将其退出并重试.例如,如果您有,20100421175455_create_things.rb
那么您将使用以下命令重新运行它:
rake db:migrate:redo VERSION=20100421175455
Run Code Online (Sandbox Code Playgroud)
常见的情况是您的迁移首先无法运行,例如它生成了异常,但Rails仍然认为它已完成.要强制重新运行迁移,请从schema_migrations
表中删除相应的记录并rake db:migrate
再次运行.
避免此类问题的一种方法是使用自动退出程序定义迁移:
class CreateThings < ActiveRecord::Migration
def self.up
# ... (migration) ...
rescue
# If an exception occurs, back out of this migration, but ignore any
# exceptions generated there. Do the best you can.
self.down rescue nil
# Re-raise this exception for diagnostic purposes.
raise
end
end
Run Code Online (Sandbox Code Playgroud)
如果迁移中出现错误,您将看到控制台上列出的异常.由于迁移已自动回滚,因此您应该能够一次又一次地运行它,直到您正确运行它.
归档时间: |
|
查看次数: |
24210 次 |
最近记录: |