Rails3.2中,create_table,自动创建主键的语句为,DEFAULT NULL primary_key auto_increment,而mysql5.7这样的情况是不允许的,所以会抛出异常。如果你使用的是mysql2这个mysql适配器,在config/initializers/abstract_mysql_adapter.rb
:
class ActiveRecord::ConnectionAdapters::Mysql2Adapter NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY" end
,这样就会覆盖默认的主键生成的sql,这其实是一个猴子补丁。==!