如何解決IBatis.net與MySQL連接問題
由于筆者最近在做一個(gè)跨數(shù)據(jù)庫操作的測試,開始做IBatisNet (IBatis.DataMapper.1.6.2/IBatis.DataAccess.1.9.2)+ SQL Server2005的測試時(shí),使用都很順利,但是使用IBatisNet+ MySQL(5.1)的時(shí)候,卻出現(xiàn)了一些問題。經(jīng)過努力和網(wǎng)上收集終于解決了,下面把問題和解決辦法一一貼出來共享。
問題描述:
1. 錯(cuò)誤提示Check the MySQL。
出現(xiàn)這個(gè)問題首先請(qǐng)下載mySQL-connector-net,如果已經(jīng)下載并安裝了,繼續(xù)檢查IBatisNet的providers.config文件里的MySQL的provider節(jié)點(diǎn)的enabled是否設(shè)為“true”了,如果設(shè)為“true”,繼續(xù)檢查provider,官方提供的配置有些使用動(dòng)態(tài)鏈接庫文件版本很老,你需要手動(dòng)去修改,例:
修改前:
- <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"
- />
修改后(加亮這個(gè)一定要注意,如果為false,是不能連接數(shù)據(jù)庫成功的):
- <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. 錯(cuò)誤提示 Unable to open connection to "MySQL, MySQL provider V6.3.2.0"。
出現(xiàn)這樣的錯(cuò)誤可能是Configure方法指定的配置文件的鏈接字符串有點(diǎn)問題,一下是我的,僅供參考。
- <?xml version="1.0" encoding="utf-8" ?>
- <SQLMapConfig xmlns=
- "http://ibatis.apache.org/dataMapper" xmlns:xsi=
- "http://www.w3.org/2001/XMLSchema-instance">
- <!--以上為固定格式,從這里開始以下是用戶配置項(xiàng) -->
- <settings>
- <!-- 該選項(xiàng)指示是否使用緩存,默認(rèn)為true -->
- <setting cacheModelsEnabled="true"/>
- <!-- 當(dāng)該選項(xiàng)為true時(shí),
- 你在調(diào)用指定的映射時(shí)你總是必須給出完整的名稱例如:
- queryForObject(“Namespace.statement.Id”);
- -->
- <setting useStatementNamespaces="false" />
- </settings>
- <!-- 數(shù)據(jù)驅(qū)動(dòng)提供類配置文件的路徑和文件名 -->
- <providers resource="providers.config" />
- <!-- 指定一個(gè)屬性源,相當(dāng)與設(shè)置一些屬性變量,
- 該文件請(qǐng)查看下面 -->
- <!--指定數(shù)據(jù)源${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. 錯(cuò)誤提示 Character set 'gbk' is not supported。
出現(xiàn)此問題,可能你用了底版本的MySQL-connector-net,因?yàn)樵贛ySQL Connector 1.07中提供的字符編碼是有限的,找到不到web.config中設(shè)置的編碼類型,沒有g(shù)bk,換個(gè)版本高的MySQL Connector 。
【編輯推薦】