我有rake迁移并生成所有表。
现在,我想更改一个表,但我不想更改迁移。我只想删除该表并再次执行命令:
rake db:migrate
但什么都没发生。
所以我想知道,当我删除表格后生成新表格时,我该怎么办?
答案 0 :(得分:1)
如果您正在运行更改,则应使用:
rake db:rollback
... make changes ...
rake db:migrate
现在要修复它,你必须删除schema_migrations
表中的最后一个条目(因为你没有运行我正在猜测的回滚)。
答案 1 :(得分:1)
假设您要更改带有时间戳的迁移:201311211234并且您只想更改此特定迁移而不影响其他表,那么
rake db:migrate:down VERSION=201311211234
然后对该迁移文件进行更改
然后就这样做
rake db:migrate:up VERSION=201311211234
第二个选项是从schema_migrations
表中删除版本201311211234的行,然后运行rake db:migrate
答案 2 :(得分:1)
rake db:migrate
更新架构文件。编写迁移文件时,请确保在self.down
中推送代码。因此,当您运行rake db:rollback
时,将执行以下命令。您可以手动更改架构文件以解决此问题。
您也可以从控制台运行特定的迁移,但在任何情况下都应该避免使用时间戳从终端运行它。