[development] Form field maxlengths vs. database field sizes

Steven Wittens steven at acko.net
Thu Feb 9 09:01:11 UTC 2006


Chris Johnson schreef:

> Adrian Rossouw wrote:
>
>>
>> On 08 Feb 2006, at 6:22 AM, Karthik wrote:
>>
>>> This issue stems from Killes' comment [
>>> http://drupal.org/node/46306#comment-71971 ]. Should form field
>>> maxlengths be consistent with corresponding database field sizes or
>>> should unicode encoding be accounted for?
>>
>>
>> Drupal has no way of knowing what the field size of the database is,
>> and as such the forms api can't take that into account.
>
>
>
> It does not presently, but Drupal could know the field sizes in the 
> database tables.  However, is that worth doing?  (I'm presently 
> developing a database abstraction layer for my employer where the db 
> layer figures out the metadata, like field sizes, on the fly so that 
> the applications need not know anything at all about it.)

The problem is inconsistency across mysql versions. On MySQL 4.1+ (and 
w/ drupal 4.7), database field sizes are counted in characters. On 4.0 
and below, they are in bytes. So for a varchar(256) we could have from 
64 to 256 characters (4 to 1 bytes per character) with UTF-8. Should we 
set the maxlength to 64 then? We settled on the compromise of half (128) 
on the assumption that most people use 1-2 byte characters.

Once we phase out MySQL 4.0 we can safely make them all match the 
database sizes.

Steven



More information about the development mailing list