连接到PostgreSQL DB失败

本文关键字:失败 DB PostgreSQL 连接 | 更新日期: 2023-09-27 18:33:31

我目前正在开发一个 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 = 空
    • 连接字符串 ="服务器=本地主机;端口 = 5444;User Id=USERSAMPLE;Database=DBSAMPLE;密码=PWDSAMPLE;">
    • DbCn = 空
    • DbCnSubSelect = null
    • 数据库工厂 = 空
    • 数据库隔离级别 = 未指定
    • 默认命令行为 = 顺序访问
    • 引擎 = 后置
    • 错误 = 0
    • 错误文本 = 空
    • 最后一行受影响 = 0
    • LOBFetchSize = 0
    • 提供程序 = "Npgsql">
    • 刷新计数 = 0
    • 刷新电流 = 0
    • 架构 = 空

当我使用露天飞机myDbClient.Open()时会出现错误

有什么建议吗?需要更多详细信息 ?我准备和你们一起解决这个痛苦的错误,我的伙伴们!

连接到PostgreSQL DB失败

Alfrescox64位连接器使用.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 尝试打开数据库并获取请求的提供程序时,使用此插入操作,它将成功。