0

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 であることがわかります。execute ステートメントはトランザクションにラップされていませんか?

4

1 に答える 1

3

alter tablemysqlで暗黙的なコミットを実行します。をロールバックすることはできませんalter

于 2013-01-10T18:29:38.907 に答える