Progress OpenEdge ERROR [60] [DataDirect][ODBC 20101 driver]



在尝试使用odbc连接到进度开放边缘数据库时遇到问题。客户端代码是用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成功连接,并且可以查询表。

Environnement):它是一个基于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();
}

根据Progress知识库,您得到的是错误编号(60,6013)而不是错误消息,这表明存在阻止消息描述文件加载的配置问题。

https://knowledgebase.progress.com/articles/Knowledge/3556表示:

原因:ODBC驱动管理器和/或ODBC驱动库不能加载消息文件

InstallDir在ODBC .ini文件的[ODBC]部分设置不正确文件或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驱动程序的安装路径例如InstallDir =/opt/odbc

确保.mo/.po消息文件存在(odbcinstalldir/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

最新更新