我最近开始使用Rails,并使用CLI创建了一些模型,这反过来又创建了一些迁移。
我在那里添加了所有列后运行了rake db:migrate
命令,然后意识到我遗漏了这些关联。
那我做了什么? 我继续编辑迁移以包含这些密钥。
我再次运行rake db:migrate
,架构中没有任何变化。
然后我运行rake db:reset
然后rake db:setup
。
当这不起作用时,我删除了我的schema.rb
(这件事不会更新!)并尝试recreating it。当我意识到这不起作用时,我删除了数据库,并杀死了模式。
现在我遇到了一些手动修改的迁移,没有schema.rb
而没有数据库。
如何让修改后的迁移生成模式,并与Rails一起玩?
答案 0 :(得分:4)
在开发中,删除并重建数据库无关紧要。我经常这样做,甚至还有一个rake任务。链的3命令是:
rake db:drop
rake db:create
rake db:migrate
# And a 4rth optional command to rebuild your test database
rake db:test:prepare
这样你应该很好
下次您需要在迁移后手动修改迁移,您应该按以下方式处理:
rake db:rollback
rake db:migrate
遵循这些步骤可以省去一些麻烦
奖金信息:
将迁移部署到生产服务器后,您无法手动修改它,因此您必须编写另一个将执行修改的迁移(添加列等等)