我使用scaffolding创建了一个rails应用程序并迁移了数据库。
我通过git commit -m "First commit"
提交了一个本地存储库
然后我使用rake db:rollback
展开数据库,应用程序停止工作。
我尝试撤消使用git checkout .
,但应用程序仍未运行,直到我使用rake db:migrate
再次迁移数据库。
为什么会这样?
答案 0 :(得分:4)
Rails的迁移机制会检查数据库中的特定表,该表显示哪些迁移应用于您的数据库以及哪些是挂起的迁移(来自存在但没有条目的文件)。
当您执行db:migrate
或db:rollback
时,此表也会更新。
db文件不在您的存储库中(并且不应该存在),因此您无法通过git撤消这些更改。
您需要使用rake任务提供的工具。
运行rake -T db
将为您提供操作迁移和数据库状态所需工具的完整列表。
答案 1 :(得分:0)
如果要重做或更改迁移,则需要创建另一个迁移, 有关详情,请查看this。