【发布时间】:2016-11-07 20:42:13
【问题描述】:
我一辈子都搞不清楚这里发生了什么,但是我对 rails 不是很熟悉:
我已经修改了我的 database.yml 文件以指向一个新的 mysql 测试数据库而不是 sqlite。在 dev 上执行 RAILS_ENV=test db:drop db:create db:seed 时,它工作正常。
但是它总是在测试中失败,引用一个表在被其中一个迁移更改时不存在。我尝试了在开发数据库上加载与在测试数据库上加载的完全相同的 .sql 文件,没有错误。
我能够删除测试数据库并复制开发数据库,它可以正常工作,但由于某种原因......通过迁移它无法在测试数据库上工作(这是一个新创建的数据库,但也是技术上的开发人员,因为我每次都使用种子文件从头开始删除并重新创建它)
什么会导致这样的事情?迁移在新的 DEV 数据库 (Mysql2) 而不是在新的 TEST 数据库 (Also Mysql2) 上运行良好
具体的错误是抱怨无法更改表,因为它不存在。 (我在 SQL Pro 中确认该表也不存在),但是当迁移在 Dev 数据库上运行时它工作正常(即使在被删除并且上面的命令(但只是在 RAILS_ENV=development 中运行)运行之后。
【问题讨论】:
-
你跑
rake db:test:create了吗? -
听起来您正在对某个数据库运行 rake 命令,而不是您认为正在运行的数据库。可能想发布您的 database.yml。您还可以尝试使用
rake db:migrate RAILS_ENV=test之类的方式指定 rake 命令的目标 -
也许可以试试
rake db:migrate db:test:preparestackoverflow.com/questions/15169894/… -
我运行的所有命令都以 RAILS_ENV=test 开头
标签: mysql ruby-on-rails