It's not web2py's fault that MySQL silently truncates data.

http://www.davidpashley.com/blog/databases/mysql/silently-truncated


On Wednesday, June 19, 2013 5:52:26 AM UTC-7, Chris wrote:
>
> The main problem is that the failure is silent.  It makes no sense that a 
> developer declares a field to be length 1000, and DAL arbitrarily reduces 
> that to 255 instead of providing an error message.  I understand why 255 
> may be a safe default limit for MySQL; but if so then fail the field 
> creation with a relevant error message (and maybe reference Jonathan's 
> solution re: how to override maxcharlength if the developer knows the DBMS 
> version can handle the larger limit).
>
> In the current 2.5.1 code, looking in dal.py:
>
> class MySQLAdapter(BaseAdapter):
>     ....
>     maxcharlength = 255
>
> ...
>
> class Table(object):
>     ...
>     def __init__(        self,
>         db,
>         tablename,
>         *fields,
>         **args
>         ):
>         ...
>         for field in fields:
>             ...
>             if db and not field.type in ('text', 'blob', 'json') and \
>                     db._adapter.maxcharlength < field.length:
>                 field.length = db._adapter.maxcharlength   ### problem line
>
>
> I'd recommend the last line above, marked ### problem line, be replaced 
> with something like, raise ValueError('Requested field length exceeds 
> adapter maxcharlength, cannot create.  See http://whatever for a way to 
> override this limit.')
>
> ??
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to