使用事务rails数据库迁移

ric*_*i90 4 ruby-on-rails database-migration

我刚学习Rails并开始了关于数据库迁移的部分.我构建了2次迁移,并且都成功迁移了.向下迁移,由于我的代码中存在拼写错误,最新运行的迁移失败了.我修正了错字,但之后迁移继续失败.我发现原因是迁移中断了一半中途改变然后当我尝试再次向下迁移时失败了,因为已经进行了一些更改,因此列名称不同以及其他类似的问题.我最后通过摆弄schema_migrations桌子并手动将我的更改回滚到以前的版本,然后从那里上下移动来修复它.

我的问题是,有没有办法告诉Rails在事务模式下运行迁移,如果代码失败,不提交事务?

mea*_*gar 7

如果您的数据库支持, Rails已经在事务中运行您的迁移:

在支持使用更改架构的语句进行事务的数据库上,迁移将包含在事务中.如果数据库不支持此操作,那么当迁移失败时,成功的部分将不会回滚.您必须回滚手动更改的内容.

在执行架构更改时,您可以使用尊重事务的数据库.MySQL(据我所知)没有,但Postgres绝对做到了.

  • @ richbai90这取决于您在迁移中正在做什么。例如,“ alter table”语句在执行该语句之前执行隐式提交。参见/sf/ask/1596438301/ (2认同)