Skip to content

Instantly share code, notes, and snippets.

@stream7
Created July 7, 2011 14:09
Show Gist options
  • Star 51 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save stream7/1069589 to your computer and use it in GitHub Desktop.
Save stream7/1069589 to your computer and use it in GitHub Desktop.
Rails migrations integer :limit option
literally always have to look up the meaning of :limit in migrations when it comes to integer values. Here's an overview. Now let's memorise it (oh, this works for MySQL, other databases may work differently):
:limit Numeric Type Column Size Max value
1 tinyint 1 byte 127
2 smallint 2 bytes 32767
3 mediumint 3 byte 8388607
nil, 4, 11 int(11) 4 byte 2147483647
5..8 bigint 8 byte 9223372036854775807
Note: by default MySQL uses signed integers and Rails has no way (that I know of) to change this behaviour. Subsequently, the max. values noted are for signed integers.
taken from http://ariejan.net/2009/08/20/once-and-for-all-rails-migrations-integer-limit-option/
@teddyzetterlund
Copy link

Also, Postgres doesn't support tinyint but Rails migrations handles that automatically and sets it to smallint.

@marcamillion
Copy link

Thanks for this gist. Really saved my bacon tonight!

@segunadeleye
Copy link

Thanks for this important information 💯 👍

@sindhu-shree-1
Copy link

What's the default column size when :limit option is not specified?

@sindhu-shree-1
Copy link

What's the default column size when :limit option is not specified?

nvm. It's int(11) i.e. 4 bytes

@nhson219
Copy link

thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment