由于笔者最近在做一个跨数据库操作的测试,开始做IBatisNet (IBatis.DataMapper.1.6.2/IBatis.DataAccess.1.9.2)+ SqlServer2005的测试时,使用都很顺利,但是使用IBatisNet+ MySql(5.1)的时候,却出现了一些问题。经过努力和网上收集终于解决了,下面把问题和解决办法一一贴出来共享。
问题描述:
1、错误提示Check the MySql。
出现这个问题首先请下载mysql-connector-net,如果已经下载并安装了,继续检查IBatisNet的providers.config文件里的MySql 的provider节点的enabled是否设为“true”了,如果设为“true”,继续检查provider,官方提供的配置有些使用动态链接库文件版本很老,你需要手动去修改,例:
修改前:
<provider name="MySql" description="MySQL, MySQL provider 1.0.7.30072" enabled="false" assemblyName="MySql.Data, commandClass="MySql.Data.MySqlClient.MySqlCommand" parameterClass="MySql.Data.MySqlClient.MySqlParameter" parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType" parameterDbTypeProperty="MySqlDbType" dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter" commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="?" allowMARS="false" /> |
修改后(加亮这个一定要注意,如果为false,是不能连接数据库成功的):
<provider name="MySql" description="MySQL, enabled="true" assemblyName="MySql.Data, Version=6.3.2.0, commandClass= parameterClass= parameterDbTypeClass= parameterDbTypeProperty= dataAdapterClass= commandBuilderClass= usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="?" allowMARS="false" /> |
2、错误提示 Unable to open connection to "MySQL, MySQL provider V6.3.2.0"。
出现这样的错误可能是Configure方法指定的配置文件的链接字符串有点问题,一下是我的,仅供参考。
<?xml version="1.0" encoding="utf-8" ?> <sqlMapConfig xmlns= <!--以上为固定格式,从这里开始以下是用户配置项 --> <settings> <!-- 该选项指示是否使用缓存,默认为true --> <setting cacheModelsEnabled="true"/> <!-- 当该选项为true时, <setting useStatementNamespaces="false" /> </settings> <!-- 数据驱动提供类配置文件的路径和文件名 --> <providers resource="providers.config" /> <!-- 指定一个属性源,相当与设置一些属性变量, <!--指定数据源${datasource} ${database} <database> <!--<provider name="ByteFx"></provider> <dataSource name="IBatisNet" <provider name="MySql"></provider> <dataSource name="IBatisNet" </database> <!--指定映射的文件的位置 --> <sqlMaps> <!-- 从程序集中 <sqlMap embedded="${root}Person.xml,${assembly}" />--> <!-- 从文件中--> <sqlMap resource="SqlDetailXml/SystemXml/RoleInfo.xml" /> <sqlMap resource="SqlDetailXml/SystemXml/ModuleInfo.xml" /> <sqlMap resource="SqlDetailXml/SystemXml/UserInfo.xml" /> </sqlMaps> </sqlMapConfig> |
3、错误提示 Character set 'gbk' is not supported。
出现此问题,可能你用了底版本的mysql-connector-net,因为在MySQL Connector 1.07中提供的字符编码是有限的,找到不到web.config中设置的编码类型,没有gbk,换个版本高的MySQL Connector 。