【问题标题】:Progress OpenEdge ERROR [60] [DataDirect][ODBC 20101 driver]6013进度 OpenEdge 错误 [60] [DataDirect][ODBC 20101 驱动程序]6013
【发布时间】:2021-10-05 20:17:03
【问题描述】:

我在尝试使用 odbc 连接到进度 opensge 数据库时遇到问题。客户端代码在 c# 中并在 docker 中运行。这是我的代码:

using (OdbcConnection cn = new OdbcConnection("DSN=PROGRESS;UID=username;PWD=pass;"))
{
    cn.Open();
}

问题是程序在cn.Open() 处崩溃并出现以下错误:ERROR [60] [DataDirect][ODBC 20101 driver]6013。

我可以使用isql -v PROGRESS username pass成功连接,并且可以查询表。

环境: 它是 docker 环境中的 .NET Core 应用程序。这是我的 odbc.ini 文件:

[PROGRESS]
Driver=/usr/lib/x86_64-linux-gnu/pgoe27.so
HostName=192.168.2.11
DatabaseName=dbname
LogonID=username
Password=pass
PortNumber=20000

[ODBC]
Trace=0
TraceFile=odbctrace.out
TraceDll=/usr/lib/openedge/lib/pgtrc27.so
InstallDir=/usr/lib/openedge

我不明白为什么我可以使用 isql 连接但不能使用 c# OdbcConnection... 提前致谢

已编辑

这是我的 odbc 文件夹权限:

# ls -l lib
total 27124
-rwxr-xr-x 1 root root  1782648 Aug  2 13:09 libodbc.so
-rwxr-xr-x 1 root root  1280424 Aug  2 13:09 libodbcinst.so
-rwxr-xr-x 1 root root 14682952 Aug  2 13:09 libpgicu27.so
-rwxr-xr-x 1 root root  1468736 Aug  2 13:09 libpgmback.so
-rwxr-xr-x 1 root root  2351288 Aug  2 13:09 libpgssl27.so
-rwxr-xr-x 1 root root  1586488 Aug  2 13:09 odbccurs.so
-rwxr-xr-x 1 root root  2871272 Aug  2 13:09 pgoe27.so
-rwxr-xr-x 1 root root  1667632 Aug  2 13:09 pgtrc27.so
-rwxr-xr-x 1 root root    63800 Aug  2 13:09 vscnctdlg.so

# ls -lR locale
locale:
total 8
drwxrwxrwx 1 root root 4096 Aug  2 13:09 en_US

locale/en_US:
total 4
drwxrwxrwx 1 root root 4096 Aug  2 13:09 LC_MESSAGES

locale/en_US/LC_MESSAGES:
total 208
-rw-rw-r-- 1 root root 36241 Aug  2 13:09 odbc.m
-rw-rw-r-- 1 root root 19099 Aug  2 13:09 odbc.po
-rw-rw-r-- 1 root root 19096 Aug  2 13:09 pgmback.mo
-rw-rw-r-- 1 root root 11581 Aug  2 13:09 pgmback.po
-rw-rw-r-- 1 root root 72722 Aug  2 13:09 pgoe27.mo
-rw-rw-r-- 1 root root 47627 Aug  2 13:09 pgoe27.po

我已经在我的 .net 程序中管理连接指定连接,但我仍然无法使用 DSN + odbc.ini:

OdbcConnectionStringBuilder builder = new OdbcConnectionStringBuilder
{
    Driver = "/usr/lib/openedge/lib/pgoe27.so",
};
builder.Add("HostName", "192.168.2.11");
builder.Add("DatabaseName", "PROGRESS");
builder.Add("LogonID", "username");
builder.Add("Password", "password");
builder.Add("PortNumber", "20000");


using (OdbcConnection cnGlims = new OdbcConnection(builder.ConnectionString))
{
    cnGlims.Open();
}

【问题讨论】:

    标签: c# docker odbc openedge unixodbc


    【解决方案1】:

    根据进度知识库,您收到错误编号(60、6013)而不是错误消息这一事实表明存在配置问题,导致无法加载消息描述文件。

    https://knowledgebase.progress.com/articles/Knowledge/3556 说:

    原因:ODBC 驱动程序管理器和/或 ODBC 驱动程序库无法 加载它的消息文件。

    在 odbc.ini 的 [ODBC] 部分中未正确设置 InstallDir 文件或 locale/en_US/LC_MESSAGES 中的消息文件丢失。

    确保以下设置正确:

    将环境变量 LANG 设置为 en_US :

      export LANG=en_US (ksh shell)
      setenv LANG en_US (csh shell)
    

    确保环境变量 ODBCINI(或 ODBC_INI)指向 到正确的 odbc.ini 文件

    确保在 odbc.ini 文件的 [ODBC] 部分中正确 为 InstallDir 指定 ODBC 驱动程序的安装路径 例如安装目录=/opt/odbc

    确保 .mo / .po 消息文件存在 (odbcinstaldir/locale/en_US/LC_MESSAGES) 并且可以由您的 应用

    如果你的 installDir 是 /usr/lib/openedge 那么你应该像这样测试这些文件的存在(和权限):

    $ cd /usr/lib/openedge
    
    $ ls -l ./odbc/lib
    total 29832
    -rwxrwxr-x. 1 root root  1676480 Jan 21  2020 libodbcinst.so
    -rwxrwxr-x. 1 root root  2182544 Jan 21  2020 libodbc.so
    -rwxrwxr-x. 1 root root 14682952 Jan 21  2020 libpgicu27.so
    -rwxrwxr-x. 1 root root  1977640 Jan 21  2020 libpgmback.so
    -rwxrwxr-x. 1 root root  2359016 Jan 21  2020 libpgssl27.so
    -rwxrwxr-x. 1 root root  2065616 Jan 21  2020 odbccurs.so
    -rwxrwxr-x. 1 root root  3383128 Jan 21  2020 pgoe27.so
    -rwxrwxr-x. 1 root root  2142864 Jan 21  2020 pgtrc27.so
    -rwxrwxr-x. 1 root root    63800 Jan 21  2020 vscnctdlg.so
    
    $ ls -lR ./odbc/locale
    ./odbc/locale:
    total 0
    drwxrwxrwx. 3 root root 25 Apr 10  2020 en_US
    
    ./odbc/locale/en_US:
    total 0
    drwxrwxrwx. 2 root root 105 Apr 10  2020 LC_MESSAGES
    
    ./odbc/locale/en_US/LC_MESSAGES:
    total 212
    -rw-rw-r--. 1 root root 36241 Jan 21  2020 odbc.m
    -rw-rw-r--. 1 root root 19099 Jul 29  2011 odbc.po
    -rw-rw-r--. 1 root root 19096 Jan 21  2020 pgmback.mo
    -rw-rw-r--. 1 root root 11581 Jul 29  2011 pgmback.po
    -rw-rw-r--. 1 root root 74007 Jan 21  2020 pgoe27.mo
    -rw-rw-r--. 1 root root 49045 Jan 21  2020 pgoe27.po
    

    【讨论】:

    • 请看编辑后的帖子,看起来都像你!
    • 请查看编辑后的帖子,我已经在我的 .net 程序中管理了连接指定连接,但我仍然无法使用 DSN + odbc.ini ...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2011-11-12
    相关资源
    最近更新 更多