Rails 请教一个问题

dbian · 2012年10月16日 · 最后由 iBachue 回复于 2012年10月16日 · 2237 次阅读

== CreateRanks: migrating ==================== -- create_table(:ranks) -> 0.0025s -- create_table(:sudodbs) -> 0.0019s == CreateRanks: migrated (0.0048s) =====================

这是我通过 git 部署到远端的服务器上的时候,通过一个 deploy 脚本自动 migrate 的。 问题是为什么每次提交都会重新migrate一下,要知道我的脚本 20121015164133_add_something.rb` 是这样的:

class CreateRanks < ActiveRecord::Migration def change create_table :ranks do |t| t.timestamps end create_table :sudodbs do |t| t.timestamps end

end end

所以,每次新的数据都会被这个 migrate 给擦掉,实在是蛋疼不已。不是说已经执行过的迁移就不会再次执行了吗?请教各位如何才能正确的按照 migrate 脚本的时间戳来自动使用 migrate,谢谢

我自己想到一个折衷的方法,每次 migration 脚本执行完后,再把他移到其他目录。。。

你是不是数据库管 migration 的那张表被擦掉过了。。。

我又试了一下,换成了 mysql 就没问题了,我估计跟 database.yml 这个文件设置有关,我之前用的 sqlite 配置是这样的

adapter: sqlite3 pool: 5 timeout: 5000 database: db/sudo.sqlite3

是不是少了什么参数,还是顺序有要求?

@iBachue ,你是说 scheme.rb 文件吗

额 好吧 你已经解决了 我之前说的是数据库里 schema_migrations 这样表,migration 是由它管的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号