gpt4 book ai didi

c# - 连接到 PostgreSQL 数据库失败

转载 作者:行者123 更新时间:2023-11-29 12:13:24 25 4
gpt4 key购买 nike

我目前正在处理 3.5 .NET C# 项目。它使用一个外部程序,在我构建和运行它时接受一个参数。外部程序用于索引结构化或非结构化数据源。

C# 项目是一个简单的.dll,它覆盖了一些外部程序方法。在初始化部分,我请求连接到我的 postgreSQL DB 以取回唯一 ID。

警告:索引器和我的数据库没有链接,索引器可以索引包含 .xls 文件或 mysql 数据库的文件夹。我的PostgreSQL来就是为了带上一个唯一的ID,存储一些重要的信息

我的问题是当我作为外部程序启动 DBConnector 这是一个 32 位 索引器时,一切顺利。

而当我启动 AlfrescoConnector 这是一个 64 位索引器时,我无法打开我的 postgreSQL 数据库。

我安装了 x86 和 x64 类型的连接器,但我不知道问题是否出自那里。

我正在处理 Visual 2012,我的调试设置为生成 x86 兼容程序(将其更改为“任何 CPU”或“x64”无法解决问题)

我使用的 db 对象是 DbClient,这是一种您在 Internet 上找不到的特定方法,因为它来自外部程序引用,但它作为经典的 DbConnector 工作。

我的 DbClient 对象如下所示:

  • dbClient = {Sinequa.Common.DbClient}
    • _CurrentTransaction = null
    • ConnectionString = "Server=localhost;Port=5444;User Id=USERSAMPLE;Database=DBSAMPLE;Password=PWDSAMPLE;"
    • DbCn = null
    • DbCnSubSelect = null
    • DbFactory = null
    • DbIsolationLevel = 未指定
    • DefaultCommandBehavior = SequentialAccess
    • 引擎 = Postgres
    • 错误 = 0
    • ErrorText = null
    • LastRowAffected = 0
    • LOBFetchSize = 0
    • 提供者 = "Npgsql"
    • 刷新计数 = 0
    • 刷新电流 = 0
    • 架构 = null

当我对 Alfresco 执行 myDbClient.Open() 时出现错误

有什么建议吗?需要更多详细信息?我已准备好与您一起解决这个痛苦的错误!

最佳答案

Alfresco x64 位连接器使用 .NET 配置文件的 x64 位。配置文件位于:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.conf
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.conf
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.conf
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.conf

请记住,问题在于缺少提供者。因此,要解决此问题,您必须像这样在 DbProviderFactories 标记之间插入缺少的提供程序:

<DbProviderFactories>
<add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Framework Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.13.91, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>

使用此插入,下次 DbClient 将尝试打开数据库并获取请求的提供程序时,它将成功。

关于c# - 连接到 PostgreSQL 数据库失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19134946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com