在IBatisNet使用ByteFX链接MySql,故障问题收集:
1. Client does not support authentication protocol requested by server
场景:MySQL Server 5.0,ByteFX.Data 0.76,执行MySqlConnection.Open()时报错。
原因:MySQL后来的版本跟之前的版本密码加密的Hash算法或Code不一样,而ByteFX.Data 0.76这样的Provider或者是MySQL的ODBC驱动等,在新的Server版本之下用的仍然是老的加密方法,造成MySQL登陆故障。
解决:SET PASSWORD FOR root@localhost = OLD_PASSWORD('New Password');
2. Data too long for column 'xx' in row 1
场景:MySQL Server 5.0,ByteFX.Data 0.76,执行Insert语句,字段值中有中文,报上面的错误
原因:MySQL 5.0字符集处理的问题
解决:
将MySQL安装目录下的my.ini文件中的字符集配置如下(修改完之后,最好重启一下MySQL服务):
[mysql]
default-character-set=gbk
[mysqld]
default-character-set=gbk
default-character-set=gbk
[mysqld]
default-character-set=gbk
将表和字段的字符集属性都改成gbk。
在每一次MySqlCommand Execute语句时,如果SQL语句或者参数中包含中文,或者是返回的记录集中有中文(指Select的查询语句),就在这个Execute的SQL语句之前加一个SET NAMES GBK;。
1. 参数化方式 使用ByteFX.Data完整示例
2. 使用Batch Insert方式(执行效率跟参数化方式基本一样)