Migration doesn't seem to preserve create_table options in s


#1

Hi,

I have the following migration (abbreviated):

class Initial < ActiveRecord::Migration

def self.up
create_table :messages, :options => ‘ENGINE=MyISAM’, :force => true
do
|t|
t.column :id, :integer, :null => false
t.column :external_id, :string, :null => false
t.column :recipients_count, :integer, :default => 0
end
end

def self.down
drop_table :messages
end
end

When running migrate it creates the table and the schema, but it doesn’t
preserve the “:options” in the test environment…
ActiveRecord::Schema.define(:version => 1) do

create_table “messages”, :force => true do |t|
t.column “external_id”, :string, :default => “”, :null => false
t.column “from”, :string, :default => “”, :null => false
t.column “subject”, :string
end

end

The funny thing is that this happens with the test database, not with
development. In development these options are used to create the
database:

mysql> show create table messages;

messages | CREATE TABLE messages (
id int(11) NOT NULL auto_increment,
external_id varchar(255) NOT NULL,
from varchar(255) NOT NULL,
subject varchar(255) default NULL,
body tinytext,
created_on datetime default NULL,
recipients_count int(11) default ‘0’,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

In test I still see “InnoDB”…

Deleting the schema.rb didn’t help.

environment.rb contains this:

config.active_record.schema_format = :ruby

test.rb doesn’t seem to contain anything that overrides that.

I am also wondering when the migration for test occurs? After rake
migrate
nothing seems to happen to the test database, but while running my tests
with rake it seems to also do the migration.

Am I doing something wrong?

Cheers,
Mariano