MySQL ODBC 3.51 Driver的一个bug
2011-07-18 22:41
295 查看
1.环境
.MySQL 5.1
.MySQL ODBC 3.51 Driver
.ADO 2.8
2.现象
示例代码
预期的的字段值为"已查看",而得到的实际是"已".
针对此问题做了若干尝试
.不论"已查看"替换成什么内容,只要包含中文则结果总是不对(一度把分析方向引向字符集问题.注意:内容不是乱码,而是不确定地截断了)
.用SQLyog工具执行没有此问题
.cast('已查看' as char(10))的结果正确(convert等效)
.MySQL ODBC选项:
Return Table Names for SQLDescribeCol
Don't Optimized Column Width(也正是此引向了得到合理解释的页面)
3.解释
http://bugs.mysql.com/bug.php?id=35044
3.51.18 (6-Aug-2007)
*Lengths returned by SQLColumns(), SQLDescribeCol(), and SQLColAttribute()
were often incorrect. These lengths should now conform to the ODBC
specification. FLAG_FIELD_LENGTH no longer has any effect. The default
behavior was incorrect. (Bug #27862)
4.解决
驱动升级到MySQLODBC 5.1 Driver.
.MySQL 5.1
.MySQL ODBC 3.51 Driver
.ADO 2.8
2.现象
示例代码
GETDBC(pdbor,this->local_dbc_.c_str()); string sql = "select '已查看' from dual"; AUTO_QUERY_RECORDSET(CRecordset,prs,pdbor); prs = pdbor->Query(sql.c_str()); _variant_t v; prs->GetFieldValue(0,v); FieldInfo fi; prs->GetFieldInfo(0,&fi); ///DefinedSize,ActualSize 都等于3 string sval = ExVariantToString(v); ///< sval="已" |
针对此问题做了若干尝试
.不论"已查看"替换成什么内容,只要包含中文则结果总是不对(一度把分析方向引向字符集问题.注意:内容不是乱码,而是不确定地截断了)
.用SQLyog工具执行没有此问题
.cast('已查看' as char(10))的结果正确(convert等效)
.MySQL ODBC选项:
Return Table Names for SQLDescribeCol
Don't Optimized Column Width(也正是此引向了得到合理解释的页面)
3.解释
http://bugs.mysql.com/bug.php?id=35044
3.51.18 (6-Aug-2007)
*Lengths returned by SQLColumns(), SQLDescribeCol(), and SQLColAttribute()
were often incorrect. These lengths should now conform to the ODBC
specification. FLAG_FIELD_LENGTH no longer has any effect. The default
behavior was incorrect. (Bug #27862)
4.解决
驱动升级到MySQLODBC 5.1 Driver.
相关文章推荐
- 可遇不可求的BUG之采用MYSQL odbc 3.51访问数据库返回值缺失
- [MySQL][ODBC 3.51 Driver]Client does not support authentication protocol requested by server; consider upgrading MySQL client
- [MySQL][ODBC 3.51 Driver][mysqld-5.5.37-log]Table 'ldk2.T_User' doesn't exist问题解决
- MESSAGE: [unixODBC][MySQL][ODBC 3.51 Driver]Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
- MESSAGE: [unixODBC][MySQL][ODBC 3.51 Driver]Can't connect to local MySQL server through socket '/tmp
- [Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询(解决办法)
- [MySQL][ODBC 5.7 Driver]Can't connect to MySQL server on 'localhost' (10061)
- Go-MySQL-Driver:一个Go语言的轻量级极速的mysql驱动
- MySQL关于exists的一个bug
- mysql的又一个让人捉摸不透的bug?
- MySQL关于timestamp和mysqldump的一个“bug”
- MySQL 的一个Bug?
- MySQL ODBC Driver中MSI与ZIP的区别
- MySQL关于exists的一个bug
- mysql无法创建function的一个bug,代号1418
- mysql 多线程写入后查询丢失数据的一个bug
- 边学边用Mysql(3):cursor的一个bug
- 解决安装mysql-connector-odbc-5.3.2 错误1918……不能加载安装或转换器库……的BUG
- Mysql ODBC 5.1 Driver免安装脚本
- 关于MySQL count(distinct) 逻辑的一个bug【转】