[freetds] error for insert into varbinary column: Implicit conversion from data type varchar to varbinary is not allowed

Frediano Ziglio freddy77 at gmail.com
Sun Feb 28 09:06:01 EST 2010


Il giorno 26/feb/2010, alle ore 19.52, Hari Krishna Dara <haridara at gmail.com 
 > ha scritto:

>>
>> Date: Fri, 26 Feb 2010 15:30:05 +0100
>> From: Frediano Ziglio <freddy77 at gmail.com>
>> Subject: Re: [freetds] error for insert into varbinary column:
>>       Implicit        conversion from data type varchar to  
>> varbinary is
>> not allowed
>> To: FreeTDS Development Group <freetds at lists.ibiblio.org>
>> Message-ID:
>>       <aa1b71111002260630p3904d213jffd79fabbd1b975d at mail.gmail.com>
>> Content-Type: text/plain; charset=UTF-8
>>> Since I am using pyodbc.Buffer (which itself is mapped to python's
>> built-in
>>> buffer type), this is not text. If somewhere in the stack, it is  
>>> being
>>> treated as text, then it is a bug.
>>>
>>> -- Hari
>>
>> To narrow down the problem a DM log would help. If program bind
>> pyodbc.Binary type to text this is a problem in pyodbc.
>>
>> Regards
>> Frediano
>>
>> I doubt it is a pyodbc binding problem since the same code works with
> easysoft driver and all drivers on windows.  Besides, it is not even
> reaching the bind stage yet, it fails right at the prepare. I have  
> tracing
> enabled for pyodbc and I can confirm that it fails in the prepare  
> and bind
> is not called yet. Also, when running in debug versions of python,  
> pyodbc,
> unixodbc and freetds the breakpoint is never reached when set in
> SQLBindParameter. I can also confirm this from the DM log. I am  
> attaching
> the log generated while using freetds as well as easysoft, so you  
> can see
> the difference (it will help you open them side by side by using  
> tool such
> as vim diff). I am also attaching the freetds dump file in case it  
> helps.
>
> -- 
> Thank you,
> Hari

I think that under Windows and easysoft driver it works cause they  
prepare on first execute when parameters are already binded. I tried  
to enable the same behaviour (setting need_reprepare and returning  
SQLSUCCESS from SQLPrepare) but prepare_results test fails so I think  
that some additional code is required to allow better IRD handling.

Bye
    freddy77




More information about the FreeTDS mailing list