本文解决两个问题,第一spring.net+nh+mysql 中mysql版本配置问题,第二nh配置问题

来源:互联网 发布:手机怎么发布淘宝宝贝 编辑:程序博客网 时间:2024/06/10 18:16

第一个报错

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的详细情况:

 

 

名称

介绍

SqlServer-1.1

Microsoft SQL Server, provider V1.0.5.0 in framework .NET V1.1

SqlServer-2.0

Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0

SqlServerCe-3.1

Microsoft SQL Server Compact Edition, provider V9.0.242.0

SqlServerCe-3.5.1

Microsoft SQL Server Compact Edition, provider V3.5.1.0

OleDb-1.1

provider V1.0.5000.0 in framework .NET V1.1

OleDb-2.0

provider V2.0.0.0 in framework .NET V2.0

OracleClient-2.0

Oracle, Microsoft provider V2.0.0.0

OracleODP-2.0

Oracle, Oracle provider V2.102.2.20

MySql

MySQL provider 1.0.10.1

MySql-1.0.9

MySQL provider 1.0.9

MySql-5.0

MySQL provider 5.0.7.0

MySql-5.0.8.1

MySQL provider 5.0.8.1

MySql-5.1

MySQL provider 5.1.2.2

MySql-5.1.4

MySQL provider 5.1.2.2

MySql-5.2.3

MySQL provider 5.2.3.0

Npgsql-1.0

Postgresql provider 1.0.0.0 (and 1.0.0.1 - were build with same version info)

Npgsql-2.0-beta1

Postgresql provider 1.98.1.0 beta 1

Npgsql-2.0

Postgresql provider 2.0.0.0

DB2-9.0.0-1.1

IBM DB2 Data Provider 9.0.0 for .NET Framework 1.1

DB2-9.0.0-2.0

IBM DB2 Data Provider 9.0.0 for .NET Framework 2.0

DB2-9.1.0-1.1

IBM DB2 Data Provider 9.1.0 for .NET Framework 1.1

DB2-9.1.0.2

IBM DB2 Data Provider 9.1.0 for .NET Framework 2.

SQLite-1.0.43

SQLite provider 1.0.43 for .NET Framework 2.0

SQLite-1.0.47

SQLite provider 1.0.43 for .NET Framework 2.0

SybaseAse-12

Sybase ASE provider for ASE 12.x

SybaseAse-15

Sybase ASE provider for ASE 15.x

SybaseAse-AdoNet2

Sybase ADO.NET 2.0 provider for ASE 12.x and 15.x

Odbc-1.1

ODBC provider V1.0.5000.0 in framework .NET V1.1

Odbc-2.0

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

解决方法:在使用Nhibernate连接Mysql时报这个错,请把MySql.Data.dll文件手动 拷贝到xxx/工程文件目录/bin/Debug下 就可以解决这个问题了!

 

 

0 0