I suspect there is a bug in the ODBC driver in relation to blobs. I'm now using 3.51.06, but was having this same problem on 3.51.05.
I'm using Visual C++ and their CRecordset wrapper for the ODBC calls. I'm using the positioned updates.
As long as I keep the binary data I'm trying to transfer under the default buffer size (8192) it works fine. I'm guessing it is a default buffer size from looking at the debug text.
Here is the output info from setting a binary field that works, the data for the binary field is 6933, less than the 8192.
>SQLSetPos | enter: irow: 1 fOption: SQL_UPDATE Lock: 0 | >init_dynamic_string | | >_mymalloc | | | enter: Size: 1024 | | | exit: ptr: 11ae198 | | <_mymalloc | <init_dynamic_string | >find_used_table | | >_mymalloc | | | enter: Size: 8 | | | exit: ptr: 10238a8 | | <_mymalloc | <find_used_table | >dynstr_realloc | <dynstr_realloc | >dynstr_realloc | <dynstr_realloc | >extend_buffer | | enter: current_length: 0 length: 6934 buffer_length: 8192 | <extend_buffer | info: param: 0x12eddc ctype: -2 SqlType: -4 data: 0x1412c58 length: 6933 actual_len: 6933 pos_in_query: 00FCF764 | info: param: 0x12eddc ctype: 1 SqlType: 4 data: 0xfced54 length: 1 actual_len: 1 pos_in_query: 00FCF764
That above works just fine.
Here is what happens whenever I try to set binary data > 8192:
>SQLSetPos | enter: irow: 1 fOption: SQL_UPDATE Lock: 0 | >init_dynamic_string | | >_mymalloc | | | enter: Size: 1024 | | | exit: ptr: 11ae198 | | <_mymalloc | <init_dynamic_string | >find_used_table | | >_mymalloc | | | enter: Size: 8 | | | exit: ptr: 1023808 | | <_mymalloc | <find_used_table | >dynstr_realloc | <dynstr_realloc | >dynstr_realloc | <dynstr_realloc | >extend_buffer | | enter: current_length: 0 length: 11016 buffer_length: 8192 | | >_myrealloc | | | >_mymalloc | | | | enter: Size: 16384 | | | | exit: ptr: 11ae5f0 | | | <_mymalloc | | | >_myfree | | | | enter: ptr: f37d58 | | | <_myfree | | <_myrealloc | <extend_buffer | info: param: 0x12eddc ctype: -2 SqlType: -4 data: 0x1412d30 length: 11015 actual_len: 11015 pos_in_query: 00FCF764 | >extend_buffer | | enter: current_length: 2582681 length: 11527 buffer_length: 8192 | | >_myrealloc | | | safe: Reallocating unallocated data at line 145, 'execute.c' | | <_myrealloc | <extend_buffer | >copy_error | | error: code :4001, state: S1001, err :(null) | | exit : SQL_ERROR
This happens every time I try to store more than 8192 bytes.
--------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php