【发布时间】:2013-12-05 12:32:21
【问题描述】:
我有 rake migrate 并生成所有表。
现在,我想更改一个表,但我不想进行更改迁移。我只想删除表并再次执行命令:
rake db:migrate
但什么也没发生。
所以我想知道,删除表后rake生成新表应该怎么做?
【问题讨论】:
标签: ruby-on-rails rake database-migration
我有 rake migrate 并生成所有表。
现在,我想更改一个表,但我不想进行更改迁移。我只想删除表并再次执行命令:
rake db:migrate
但什么也没发生。
所以我想知道,删除表后rake生成新表应该怎么做?
【问题讨论】:
标签: ruby-on-rails rake database-migration
rake db:migrate
更新架构文件。编写迁移文件时,请确保将代码推送到self.down。因此,当您运行rake db:rollback 时,会执行以下命令。您可以手动更改架构文件以解决此问题。
您也可以从控制台运行特定的迁移,但无论如何都应该避免这样做,而是使用时间戳从终端运行它。
【讨论】:
假设您想更改时间戳为 201311211234 的迁移,并且您只想更改此特定迁移而不影响其他表,然后这样做
rake db:migrate:down VERSION=201311211234
然后对该迁移文件进行更改
那就做吧
rake db:migrate:up VERSION=201311211234
第二个选项是从schema_migrations 表中删除版本201311211234 的行,然后运行rake db:migrate
【讨论】:
如果您正在运行更改,您应该使用:
rake db:rollback
... make changes ...
rake db:migrate
现在要修复它,您必须删除 schema_migrations 表中的最后一个条目(因为我猜您没有运行回滚)。
【讨论】: