0
使用Rails 4,我添加了一个迁移,带来我的架构的最高版本为轨架构版本并不能反映最新的迁移
我决定,我不再需要这种迁移和恢复我所有的变化由取出并检查背出主分支 -
,但我发现,运行rake db:reset; rake db:migrate
当schema.rb版本仍然设置为我的不存在迁移,版本,与旧的(和不存在的)迁移仍在我的模式上生效。
我错过了什么?为什么旧迁移即使不存在,在db重置+迁移后仍然会产生影响?在模式号
$ rm -f db/schema.rb
$ be rake db:drop; be rake db:create;
$ ls db/migrate/
20141222203059_create_posts.rb
20141223152011_create_users.rb
20150121231334_create_api_keys.rb
20150121235406_drop_user_password_and_add_password_digest.rb
20150204032843_create_carts.rb
20150204032904_create_categories.rb
20150204033026_create_customers.rb
20150204033441_create_items.rb
20150204033614_create_sales.rb
20150204033708_create_shows.rb
20150204034028_create_venues.rb
$ be rake db:migrate
$ be rake db:migrate:status
database:
Status Migration ID Migration Name
--------------------------------------------------
up 20141222203059 Create posts
up 20141223152011 Create users
up 20150121231334 Create api keys
up 20150121235406 Drop user password and add password digest
up 20150204032843 Create carts
up 20150204032904 Create categories
up 20150204033026 Create customers
up 20150204033441 Create items
up 20150204033614 Create sales
up 20150204033708 Create shows
up 20150204034028 Create venues
up 20150207195208 ********** NO FILE **********
up 20150207200152 ********** NO FILE **********
up 20150207205305 ********** NO FILE **********
注的区别:
$ git diff db/schema.rb
-ActiveRecord::Schema.define(version: 20150204034028) do
+ActiveRecord::Schema.define(version: 20150207205305) do
更新/解决方案 我们能够追踪这回一个无效的database.yml,其中零是未来通过该数据库名
我意识到这一点 - 我重置并运行迁移,我编辑我的问题,包括这一点。作为迁移文件不再存在,它在一个单独的分支, - 因为我重置,这将下降并设置数据库 - 然后我可以重新运行迁移。但不存在的迁移仍然生效 – lfender6445 2015-02-07 21:06:59
运行第二个'rake db:migrate'将不会执行任何操作,因为'schema.rb'中的模式版本已经晚于最新的迁移文件'rake db:迁移只增加版本,它不能减少它。 – 2015-02-07 21:10:04
如果我重置并迁移,不应该我的模式有最新的迁移作为版本号? – lfender6445 2015-02-07 21:11:45