InnoDB Database migration
Tuesday, May 1, 2007 at 13:17
Bart ten Brinke in Rails, SQL, SQL, innodb, migrate

I was looking for a migration that could convert my MyISAM tables to InnoDB, as I had mistakenly created some MyISAM tables. This sounds simple, but I wasn't able to find anything that did this. This simple migration I created, does the trick nicely.

class InnodbEngine < ActiveRecord::Migration
def self.up
  tables= [ 'addresses',
           'assets',
           'etcetera']

  for table in tables
    begin
      table_info = select_one "SHOW TABLE STATUS LIKE '" + table + "'"
      if (table_info['Engine'] != 'InnoDB')    
        execute 'ALTER TABLE `' + table + '` ENGINE=InnoDB'
      else
        puts table + ' allready InnoDB, skipping for migration'
      end
    rescue
      puts 'Skipping table ' + table
      puts 'Table not found or InnoDB not supported.'
    end
   end
end

def self.down
 # Not needed
end

end
Article originally appeared on Moves on Rails (http://movesonrails.com/).
See website for complete article licensing information.