The current mysql schema dumper maps all the mysql BLOB column types (blob, tinyblob, mediumblob, and largeblob) to an undecorated :binary column, and similarly all TEXT columns to an undecorated :text column.
Thus, even if you specify a bigger column, say using a :limit on a :binary column in a migration, when the database is dumped to schema and recreated, the recreated column will end up being a 'normal' mysql blob or text column, not the size that you specified. I hit this one all the time as all my test cases that need to store more than 64k into a binary field fail, since the test DB always ends up with these smaller columns.
Personally, I'd rather we just mapped :binary to longblob (rather than blob) in the first place - I can't see why anyone would mind the extra 2 bytes of storage space per BLOB, and longblob would match what happens with the connection adapters for other databases also. Plus, I think defaulting to a 64k column is a bit of an accident waiting to happen.
But David's response to ticket #4164 makes me think that he's cool with the current situation, so I've prepared this patch instead, which adds the :limit corresponding to the source column.
Cheers,
Will