项目中不乏使用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类型数据的插入操作??。