我有一個遷移,我正在改變MySQL表的字符集,從latin1到utf-8。之後,我試圖以某種方式改變對象。我希望如果一個對象無法保存以回滾數據庫,包括字符集更改。這裏是我的代碼:執行語句是否異常回滾?
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。執行語句是否未包含在事務中?
所有DDL語句執行隱式提交,您無法將它們回滾。 –