項目中不乏使用MYSQL數據庫,但是操作BLOB字段都是用Hibernate完成的。後用C++寫了個工具,在幾個數據庫之前倒換數據,在向MYSQL數據庫更新BLOB字段時遇到了困難,經過一天不懈的努力,終於解決了。
遇到的錯誤包括:
BOF 或 EOF 中有一個是“真”,或者當前的記錄已被刪除,所需的操作要求一個當前的記錄。
缺少更新或刷新的鍵列信息。
[MySQL][ODBC 5.1 Driver][mysqld-5.1.50-community]Build WHERE -> insert_fields() failed.
以及所有操作成功後,但BLOB字段還是爲空,未更新。
解決這些問題,要注意的是:
MySql查詢時如果條件字符中有"\",需要轉義,使用“\\”,否則查詢不出結果來,就沒法更新其中的BLOB值,就報相應的錯。
查詢BLOB的select語句中,也需要把主鍵select出來,比如select key,blob from table where key=...,否則也報錯,找了好久才從MySql的update語句出錯這裏看到一點信息,抱着試試的心態試了下,果然是這樣,差一點就放過了。
然後就是使用MyODBC 5.1.5驅動的問題,打開ado對象遊標時設置成adUseClient類型才能使用Blob,參考mysql不支持ado/myodbc進行blob類型數據的插入操作??。