第一个报错
Error thrown by a dependency of object 'MySql.Data.MySqlClient' defined in 'assembly [Spring.Data, Version=1.3.2.40943, Culture=neutral, PublicKeyToken=65e474d141e25e07], resource [Spring.Data.Common.dbproviders.xml] line 853' : Unsatisfied dependency expressed through constructor argument with index 2 of type [System.Type] : Could not convert constructor argument value [MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d] to required type [System.Type] : Cannot convert property value of type [System.String] to required type [System.Type] for property ''.
while resolving 'constructor argument with name dbmetadata' to 'Spring.Data.Common.DbMetadata#3005B0' defined in 'assembly [Spring.Data, Version=1.3.2.40943, Culture=neutral, PublicKeyToken=65e474d141e25e07], resource [Spring.Data.Common.dbproviders.xml] line 853'
先从人家那边复制过来的spring.net支持的数据库dll版本:
db:provider节点是数据的连接字符串配置,我们引入xmlns:db="http://www.springframework.net/database这项命名空间便可以使用它。其中provider属性为数据库提供者的名称。以下是provider的详细情况:
名称 | 介绍 |
| Microsoft SQL Server, provider V1.0.5.0 in framework .NET V1.1 |
| Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0 |
| Microsoft SQL Server Compact Edition, provider V9.0.242.0 |
| Microsoft SQL Server Compact Edition, provider V3.5.1.0 |
| provider V1.0.5000.0 in framework .NET V1.1 |
| provider V2.0.0.0 in framework .NET V2.0 |
| Oracle, Microsoft provider V2.0.0.0 |
| Oracle, Oracle provider V2.102.2.20 |
| MySQL provider 1.0.10.1 |
| MySQL provider 1.0.9 |
| MySQL provider 5.0.7.0 |
| MySQL provider 5.0.8.1 |
| MySQL provider 5.1.2.2 |
| MySQL provider 5.1.2.2 |
| MySQL provider 5.2.3.0 |
| Postgresql provider 1.0.0.0 (and 1.0.0.1 - were build with same version info) |
| Postgresql provider 1.98.1.0 beta 1 |
| Postgresql provider 2.0.0.0 |
| IBM DB2 Data Provider 9.0.0 for .NET Framework 1.1 |
| IBM DB2 Data Provider 9.0.0 for .NET Framework 2.0 |
| IBM DB2 Data Provider 9.1.0 for .NET Framework 1.1 |
| IBM DB2 Data Provider 9.1.0 for .NET Framework 2. |
| SQLite provider 1.0.43 for .NET Framework 2.0 |
| SQLite provider 1.0.43 for .NET Framework 2.0 |
| Sybase ASE provider for ASE 12.x |
| Sybase ASE provider for ASE 15.x |
| Sybase ADO.NET 2.0 provider for ASE 12.x and 15.x |
| ODBC provider V1.0.5000.0 in framework .NET V1.1 |
| ODBC provider V2.0.0.0 in framework .NET V2 |
InterSystems.Data.CacheClient | Caché provider Version 2.0.0.1 in framework .NET V2 |
解决方法
第一步:去下载mysql.dl(MySql-5.2.3版本)点击去下载
第二步:去掉所有其他版本的mysql.dll引用(一定要清楚干净,不然后面的做了也没有,本人就在此就结了一天多)
第三步:配置如下,我是a方法可以。B不行
A方法 <!--nhibernate数据库提供者mysql-->
<add key="provider" value="MySql-5.2.3" />
<add key="connectionString" value="Database=kennyweiboproxy;Data Source=localhost;port=3306;User Id=root;Password=kenny" />
<add key="dialect" value="NHibernate.Dialect.MySQLDialect" />
<add key="driver_class" value="NHibernate.Driver.MySqlDataDriver"/>
B方法 <!--nhibernate数据库提供者mysql-->
<add key="provider" value="MySql.Data.MySqlClient" />
<add key="connectionString" value="Database=kennyweiboproxy;Data Source=localhost;port=3306;User Id=root;Password=kenny" />
<add key="dialect" value="NHibernate.Dialect.MySQLDialect" />
<add key="driver_class" value="NHibernate.Driver.MySqlDataDriver"/>
第二个报错
“ReservedWord”不属于表 ReservedWords
网上是这么设置的:
在hibernate.cfg.xml配置文件中加入<property name="hbm2ddl.keywords">none</property>
我的是这么设置的:
<entry key="hbm2ddl.keywords" value="none"/>
反正意思是这个意思。加hbm2ddl.keywords
再送一个自己没有发生的问题;
Could not create the driver from NHibernate.Driver.MySqlDataDriver