首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >execute语句在异常时不会回滚吗?

execute语句在异常时不会回滚吗?
EN

Stack Overflow用户
提问于 2013-01-11 02:26:55
回答 1查看 47关注 0票数 0

我进行了一次迁移,将MySQL表的字符集从latin1更改为utf-8。在那之后,我会尝试以某种方式改变对象。我希望如果对象保存失败,可以回滚数据库,包括字符集的更改。下面是我的代码:

代码语言:javascript
复制
def up
  execute "ALTER TABLE posts CONVERT TO CHARACTER SET utf-8;"
  posts = Post.find_each do |post|
    # modify post.content
    post.save!
  end
  raise "rollback"
end 

我之所以执行raise "rollback",是因为我想测试并确保迁移工作成功。但是,如果我在迁移回滚之后执行show create table posts,我看到它的字符集仍然是utf-8。execute语句没有包装在事务中吗?

EN

回答 1

Stack Overflow用户

发布于 2013-01-11 02:29:39

alter table在mysql中执行implicit commit。您无法回滚alter

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14264767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档