You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring.NET配置MySQL数据库遇ConfigurationErrorsException错误求助

修复Spring.NET + NHibernate连接MySQL的配置错误

我来帮你搞定这个问题,你遇到的两个错误其实都是配置不匹配导致的,咱们一步步拆解修复:

核心问题分析

你现在的配置里犯了两个关键错误:

  • 误用了SQL Server的数据库提供程序System.Data.SqlClient来连接MySQL,这两者完全不兼容
  • 连接字符串的格式和你指定的NHibernate驱动没有匹配正确

步骤1:替换正确的MySQL数据提供程序

System.Data.SqlClient是专门给SQL Server用的,MySQL需要用官方的MySql.Data.MySqlClient提供程序。先修改你的<db:provider>配置:

<db:provider id="DbProvider" provider="MySql.Data.MySqlClient" 
             connectionString="Server=127.0.0.1;Port=3306;Database=dbschema;User ID=XXX;Password=XXXX"/>

注意:确保你的项目已经引用了MySql.Data程序包(可以通过NuGet安装MySql.Data或者MySql.Data.NHibernate来获取依赖)

步骤2:确认连接字符串格式(可选优化)

对于MySql.Data.MySqlClient驱动,你当前的连接字符串格式是有效的,也可以写成更标准的MySQL风格:

Server=127.0.0.1;Port=3306;Database=dbschema;Uid=XXX;Pwd=XXXX;

两种格式都能正常工作,选你习惯的就行。

步骤3:验证NHibernate配置的一致性

你已经正确配置了MySQL对应的方言和驱动,这部分没问题,但要确保和上面的DbProvider完全对应:

<property name="HibernateProperties">
  <dictionary>
    <entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
    <entry key="dialect" value="NHibernate.Dialect.MySQL5Dialect"/>
    <entry key="connection.driver_class" value="NHibernate.Driver.MySqlDataDriver"/>
    <entry key="use_proxy_validator" value="false" />
    <entry key="show_sql" value="true"/>
  </dictionary>
</property>

为什么之前会报错?

  • 第一个错误“不支持关键字‘port’”:因为你用了SQL Server的SqlClient,它的连接字符串规范里没有Port这个关键字,所以Spring.NET解析配置时直接抛出异常。
  • 第二个错误“系统找不到指定文件”:移除Port后,SqlClient还是试图加载SQL Server的驱动文件,但你实际要连接的是MySQL,自然找不到对应的驱动资源。

完整的正确配置示例

<db:provider id="DbProvider" provider="MySql.Data.MySqlClient" 
             connectionString="Server=127.0.0.1;Port=3306;Database=dbschema;User ID=XXX;Password=XXXX"/>

<object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate4">
  <property name="DbProvider" ref="DbProvider"/>
  <property name="MappingAssemblies">
    <list>
      <value>WarehouseTemplate</value>
    </list>
  </property>
  <property name="HibernateProperties">
    <dictionary>
      <entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
      <entry key="dialect" value="NHibernate.Dialect.MySQL5Dialect"/>
      <entry key="connection.driver_class" value="NHibernate.Driver.MySqlDataDriver"/>
      <entry key="use_proxy_validator" value="false" />
      <entry key="show_sql" value="true"/>
    </dictionary>
  </property>
  <property name="ExposeTransactionAwareSessionFactory" value="true" />
</object>

内容的提问来源于stack exchange,提问作者kronas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:37:54