我用rake db:migrate
and得到了一些意想不到的行为rake db:rollback
。我希望有人可以为我提供一些启示。
我通过添加一个冲突的迁移使我的迁移变得一团糟,我试图迁移回 0,以便我可以再次迁移并继续知道一切都会正常工作。
我正在运行rake db:migrate version=0
,只是被转储回命令行,没有报告迁移,也没有影响我的数据库。我确实有一个 Rakefile,并且我的 database.yml 文件设置了正确的登录凭据。
到处玩,我发现我可以毫无问题地进行rake db:rollback step=1
:根据迁移会发生适当的操作。但是,rake db:rollback step=2
(或 step=3 或 step=5 - 1 以外的任何值)一次只能进行一次迁移。
在终端中使用 mysql 完全删除数据库。重新创建它,然后去rake db:migrate
。所有的表都按应有的方式建造。我认为任何损坏的东西都是固定的。
所以我去了rake db:migrate version=0
....又什么也没发生。表仍然存在于数据库中,它本应返回为空。
有没有人有任何想法?在这一点上,我的头皮上几乎划破了一个洞。
手动删除数据库并运行我的迁移后,rake db:migrate version=0 --dry-run --trace
给我响应:
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute (dry run) environment
** Execute (dry run) db:migrate
在这一点上,我的迁移都只是 RailsTutorial.org 的复制,这是我迄今为止一直在做的学习练习;他们都有 self.down 方法,当我一次退一步时,他们都可以工作。
唯一可能相关的是我在另一台计算机(我的 PC)上完成了该教程;我将它推送到 github 并将其克隆到我的 Mac 上,以便将本教程用作我自己工作的起点。该应用程序似乎在我的 Mac 浏览器中运行良好(与在 PC 上相同),尽管我一直在遵循无数教程来第一次在 Mac 上设置 Rails 环境 (RVM),我'已经安装了不同的宝石来做到这一点。我的问题可能源于这里吗?
感谢您的任何建议!