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 ステートメントはトランザクションにラップされていませんか?