I've had similar problems when reading large fields from the database
and have overcome this by using the $dbh->{LongReadLen} parameter, but
as the name suggests I assume that this is just for reading.
Looking at "perldoc DBI" I notice a section titled "bind_param__inout"
which states
The additional $max_len parameter specifies the
minimum amount of memory to allocate to $bind_value
for the new value. If the value is too big to fit then
the execute should fail. If unsure what value to use,
pick a generous length larger than the longest value
that would ever be returned. The only cost of using a
very large value is memory.
Maybe this is what you need to set.
Hope this helps