找回密码
 注册加入

扫一扫,极速登录

QQ登录

只需一步,快速开始

搜索

IBatis.net连接MySql 问题与故障的解决方案

2011-6-5 19:10| 发布者: 湖中沉| 查看: 2060| 评论: 0

摘要: 由于笔者最近在做一个跨数据库操作的测试,开始做IBatisNet (IBatis.DataMapper.1.6.2/IBatis.DataAccess.1.9.2)+ SqlServer2005的测试时,使用都很顺利,但是使用IBatisNet+ MySql(5.1)的时候,却出现了一些问题 ...

由于笔者最近在做一个跨数据库操作的测试,开始做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, 
Version=1.0.7.30072, Culture=neutral, 
PublicKeyToken=c5687fc88969c44d" connectionClass="MySql.Data.MySqlClient.MySqlConnection"   

      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, 
MySQL provider V6.3.2.0" 

    enabled="true" 

    assemblyName="MySql.Data, Version=6.3.2.0, 
Culture=neutral, PublicKeyToken=c5687fc88969c44d" 
connectionClass=
"MySql.Data.MySqlClient.MySqlConnection" 

    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" 

  />

2、错误提示 Unable to open connection to "MySQL, MySQL provider V6.3.2.0"。

出现这样的错误可能是Configure方法指定的配置文件的链接字符串有点问题,一下是我的,仅供参考。

<?xml version="1.0" encoding="utf-8" ?> 

<sqlMapConfig xmlns=
"http://ibatis.apache.org/dataMapper" xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"> 

  <!--以上为固定格式,从这里开始以下是用户配置项    --> 

  <settings> 

    <!-- 该选项指示是否使用缓存,默认为true --> 

    <setting cacheModelsEnabled="true"/> 

    <!-- 当该选项为true时,
你在调用指定的映射时你总是必须给出完整的名称例如:
queryForObject(“Namespace.statement.Id”);   
 --> 

    <setting useStatementNamespaces="false" /> 

  </settings> 

  <!-- 数据驱动提供类配置文件的路径和文件名 --> 

  <providers resource="providers.config" /> 

  <!-- 指定一个属性源,相当与设置一些属性变量,
该文件请查看下面   --> 

  <!--指定数据源${datasource} ${database} 
${userid} ${password} 
为DataBase.config定义的值--> 

  <database> 

    <!--<provider name="ByteFx"></provider> 

    <dataSource name="IBatisNet" 
connectionString="Database=zy_test;Data Source=
localhost;User Id=root;Password=1234"/>--> 

    <provider name="MySql"></provider> 

    <dataSource name="IBatisNet" 
connectionString="Host=localhost;UserName=
root;Password=1234;Database=zy_test;Port=3306;
CharSet=utf8;Allow Zero Datetime=true"/> 

  </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 。


路过

雷人

握手

鲜花

鸡蛋

最新评论

Archiver|手机版|小黑屋|Discuz!扩展中心 ( 浙ICP备14042422号-1 )|网站地图QQ机器人

GMT+8, 2024-5-3 17:06 , Processed in 0.158710 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部