Marston_A
(Marston A.)
January 30, 2007, 3:22pm
1
I've been looking through some references but can't seem to find the
right syntax and commands.
I basically just want to have a migration to convert my db and all my
tables to InnoDB. Does anyone know a tutorial or the migration syntax
to do this? Thanks in advance
rab
(Rob Biedenharn)
January 30, 2007, 3:55pm
2
http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html
To convert a table from one storage engine to another, use an ALTER TABLE statement that indicates the new engine:
ALTER TABLE t ENGINE = INNODB;
You can specify the engine in a migration for creating a table as:
class CreateUsersTable < ActiveRecord::Migration
def self.up
create_table(:users,
:options => 'ENGINE=InnoDB') do |t|
t.column :first_name, :string, :limit => 30, :null => false
t.column :last_name, :string, :limit => 30, :null => false
t.column :phone, :string, :limit => 24
end
end
def self.down
drop_table(:users)
end
end
If you need to make a migration to change the engine later, you can do something like this:
class ChangeUsersTableEngine < ActiveRecord::Migration
def self.table_engine(table, engine='InnoDB')
execute "ALTER TABLE `#{table}` ENGINE = #{engine}"
end
def self.up
table_engine :users, 'InnoDB'
end
def self.down
table_engine :users, 'MyISAM'
end
end
You probably want to change the default storage engine in your my.cnf file.
-Rob
Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
Marston_A
(Marston A.)
January 30, 2007, 7:27pm
3
Rob,
Greatly appreciate, this is what I needed. Thanks.