Rails 5 测试数据库与开发不同步

Rails 5 test database out of sync with development

我遇到了 Rails 5.1.2 运行ning ruby 2.4.1p111 (2017-03-22 revision 58053) 的问题,每次我 运行 迁移都会将测试数据库置于 运行ning 测试是不可能的,要让测试数据库和开发数据库都进入它们都在工作的状态,以下迁移命令必须按顺序 运行:

rails db:drop
rails db:migrate RAILS_ENV=test
rails db:migrate
rails db:seed

这个问题是因为我有一个创建 table 的迁移,并试图在我重命名的列上创建和索引,所以 [null] 上的索引出现在模式中,这显然开发数据库可以处理,但测试数据库不能没有涉及如何迁移数据库的一些恶作剧

为了让开发数据库和测试数据库都能工作到我可以 运行 测试的程度。最终,我在 db/schema.rb 中的现有 table 中的空列上找到了索引,在 table 创建迁移中找到索引命令并将其删除是一件相当简单的事情。之后,只需

即可将数据库恢复原状
rails db:migrate
rails db:seed