【发布时间】:2015-08-30 02:09:04
【问题描述】:
我对 Rails 迁移有一个奇怪的问题。
我的 db/migrate 文件夹包含迁移文件,一切正常。
但不久前,我使用rails g migration MigrationName 创建了一个新文件,它生成了一个新文件。然后,当我运行 rake db:migrate 时,它会全部回滚,并且我的架构版本变为 0。
现在,当我运行 rake db:migrate 时,它什么也不做,而 db/migrate 包含我所有的迁移。
我试过rake db:reset db:drop db:create db:migrate,但没有执行迁移。但是它说“迁移正在等待运行 rake db:migrate RAILS_ENV=development”我所做的一切都是徒劳的。
我很困惑。有人遇到过这个问题吗?
我刚刚尝试了RAILS_ENV=development rake db:migrate --trace,它返回:
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:migrate
** Invoke db:_dump (first_time)
** Execute db:_dump
** Invoke db:schema:dump (first_time)
** Invoke environment
** Invoke db:load_config
** Execute db:schema:dump
跑步:
rake db:migrate:status
给我:
database: database_development
Status Migration ID Migration Name
--------------------------------------------------
up 000 ********** NO FILE **********
down 20150613120151 Devise create users
down 20150613120734 Devise create admins
down 20150614114949 Create gender
down 20150614115642 Create events
down 20150614142610 Create multi events
我尝试了很多东西:
- 我删除了我的数据库,重新启动了 postgresql 并再次运行 rake db:setup db:migrate。 rake db:migrate:status 告诉我正在等待迁移,但它不会迁移。
这让我抓狂……
编辑 我手动更新了数据库中的 schema_migrations 添加时间戳 schema:load 有效,但是当我运行 rake db:migrate 来检查它是否一切正常时,它会回滚..
编辑
如果我用时间戳手动填充数据库中的 schema_migrations 版本,当我执行 rake db:schema:status 时,它们都已启动,而我的新迁移已关闭,但如果我执行 rake db:migrate,它会尝试恢复,就好像我想运行 rake db:rollback
【问题讨论】:
-
您好,感谢您的帮助。我不知道这个 000 迁移是什么。我也不明白。我尝试在本地机器上迁移生产环境,它可以工作。
-
我会试试这个。但是每次我运行 rake db:create 时都会出现这个 000 迁移
-
好吧,Rails 生成这个
000文件然后你运行db:create似乎很正常。
标签: ruby-on-rails ruby postgresql