[英]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 AddOwnerToRestaurants
和rake 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.