I have created a demo application in rails 3.2.9
and ruby versiion 2.0.0
. After scaffolding Blog model I am trying to migrate it, but having following
require 'active_record/connection_adapters/mysql2_adapter'
class ActiveRecord::ConnectionAdapters::Mysql2Adapter
NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end
I had this problem too (mysql 0.3.21 and Rails 3.2.22.5). I fixed it by adding a file in my application config/initializers/mysql2_adapter.rb (as there was no such file before)
Added below contents,
require 'active_record/connection_adapters/mysql2_adapter' class ActiveRecord::ConnectionAdapters::Mysql2Adapter NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY" end
and then, in my environment.rb file added below contents,
require File.expand_path('../initializers/mysql2_adapter', FILE)
And it worked.
In this line id int(11) DEFAULT NULL auto_increment PRIMARY KEY
you are creating a primary key (which can never be null), with the default value NULL.
In your migration file (or schema.rb) you should make sure the DEFAULT NULL
part is removed.
This error occurred when not null is defined with primary key column.
Even if you defined any composite key, then those column definition does not contains the not null criteria.
Search for those column, remove the not null criteria, this is one of the solution to remove the error.