Permalink
Browse files

Merge pull request #283 from pixeltrix/fix-mediumtext-changing-to-lon…

…gtext

Backport of fix from rails/rails#5173
  • Loading branch information...
brianmario committed Aug 4, 2012
2 parents 14accdf + 3105855 commit 8896689cc9e13b09e81842e1dc0c4f4c30c3b881
Showing with 20 additions and 9 deletions.
  1. +20 −9 lib/active_record/connection_adapters/mysql2_adapter.rb
@@ -494,15 +494,26 @@ def rename_column(table_name, column_name, new_column_name)
# Maps logical Rails types to MySQL-specific data types.
def type_to_sql(type, limit = nil, precision = nil, scale = nil)
- return super unless type.to_s == 'integer'
-
- case limit
- when 1; 'tinyint'
- when 2; 'smallint'
- when 3; 'mediumint'
- when nil, 4, 11; 'int(11)' # compatibility with MySQL default
- when 5..8; 'bigint'
- else raise(ActiveRecordError, "No integer type has byte size #{limit}")
+ case type.to_s
+ when 'integer'
+ case limit
+ when 1; 'tinyint'
+ when 2; 'smallint'
+ when 3; 'mediumint'
+ when nil, 4, 11; 'int(11)' # compatibility with MySQL default
+ when 5..8; 'bigint'
+ else raise(ActiveRecordError, "No integer type has byte size #{limit}")
+ end
+ when 'text'
+ case limit
+ when 0..0xff; 'tinytext'
+ when nil, 0x100..0xffff; 'text'
+ when 0x10000..0xffffff; 'mediumtext'
+ when 0x1000000..0xffffffff; 'longtext'
+ else raise(ActiveRecordError, "No text type has character length #{limit}")
+ end
+ else
+ super
end
end

0 comments on commit 8896689

Please sign in to comment.