繁体   English   中英

错误地命名迁移-rake db:migrate被拒绝

[英]Mistakenly named migration - rake db:migrate rejected

这已经发生了几次,以下只是表名和一些参数的示例:

在迁移过程中添加详细信息时,我错误地命名了一个表rails g migration AddOwnerToRestaurant owner:string并运行rake db:migrate

我破坏了迁移rails destroy migration AddOwnerToRestaurant owner:string并运行rake db:rollback

然后我使用相同的详细信息正确重命名表rails g migration AddOwnerToRestaurantsrake db:migrate ...

我不断收到错误消息

StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: duplicate column name: owner

为什么所有者列不使用第一个rails destroy命令删除? 我无法将新添加的内容迁移到表中。

rollback不知道您的数据库过去是什么样。 假设您仅调用rails知道如何反向的方法( 列表 ),它将查看最后一次迁移并撤消change方法中的所有内容。

当您首先使用rails destroy migration删除rails destroy migration ,回滚无法按您希望的方式完成。 不要删除迁移,而是将其回滚并重写,然后再次向上迁移。

另外,销毁迁移时不需要列信息

由于您删除了文件,因此请执行以下操作:

rake db:migrate:status

它将显示丢失文件的ID。 因此,您可以重新创建它,然后回滚。

rake db:rollback STEP=n

“ n”是上次迁移的回滚数。

不要再破坏它。 而是创建新的迁移,以消除以前的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM