NetSuite 驱动程序无法在 Ubuntu 22.04 上使用 MariaDB:无法打开 lib 'opt/netsuite/odbcclient/lib64/ivoa27.so'

问题描述 投票:0回答:1

我正在尝试使用 MariaDB 中的 CONNECT 引擎来访问 NetSuite。我安装了 ODBC 驱动程序并使用除 MariaDB 之外的所有东西。每次尝试时,我都会收到此错误:

ERROR 1296 (HY000): Got error 174 'SQLDriverConnect: [unixODBC][Driver Manager]Can't open lib '/opt/netsuite/odbcclient/lib64/ivoa27.so' : file not found' from CONNECT

我在 Ubuntu 22.04.2 LTS 上使用 MariaDB 10.11.2。我检查过一切都是 64 位的。我已经完成了多次清除、安装和重新启动。我尝试降级到 MariaDB 10.6(Ubuntu 存储库中的版本)。 Pyodbc 和 isql 连接完美。它只是在 MariaDB 上失败了。

我已经尝试了我能找到的一切,但没有任何效果。我将在下面转储所有相关内容。此时我会接受任何建议。它仍然接近项目的开始,所以切换数据库甚至 Linux 发行版仍然在桌面上。如果有人在 Linux 上从 SQL 数据库成功连接到 NetSuite,请分享。

谢谢。

ld:

/opt/netsuite/odbcclient/lib64$ ldd ivoa27.so
        linux-vdso.so.1 (0x00007fffb35a7000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb700afc000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb700af7000)
        libicuuc.so.42 => /opt/netsuite/odbcclient/lib64/libicuuc.so.42 (0x00007fb700400000)
        libicudata.so.42 => /opt/netsuite/odbcclient/lib64/libicudata.so.42 (0x00007fb6ff300000)
        libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007fb700ae5000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb700ade000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb6ff0d6000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb6fefef000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb700abe000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb6fedc7000)
        libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007fb7006d2000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fb700b0a000)
        libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007fb700ab4000)

/等/环境:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
LD_LIBRARY_PATH="/opt/netsuite/odbcclient/lib64"
ODBCINI="/opt/netsuite/odbcclient/odbc64.ini"
OASDK_ODBC_HOME="/opt/netsuite/odbcclient/lib64"

/etc/odbc.ini:

[ODBC Data Sources]
NetSuite=NetSuite ODBC Drivers 8.1

[NetSuite]
Driver=/opt/netsuite/odbcclient/lib64/ivoa27.so
Description=Connect to your NetSuite account
Host=3989691.connect.api.netsuite.com
Port=1708
ServerDataSource=NetSuite2.com
Encrypted=1
AllowSinglePacketLogout=1
Truststore=/opt/netsuite/odbcclient/cert/ca3.cer
CustomProperties=AccountID=3989691;RoleID=1015

[ODBC]
Trace=0
IANAAppCodePage=4
TraceFile=odbctrace.out
TraceDll=/opt/netsuite/odbcclient/lib64/ddtrc27.so
InstallDir=/opt/netsuite/odbcclient

/etc/odbcinst.ini:

[ODBC Drivers]
NetSuite ODBC Drivers 8.1=Installed
UsageCount=1

[NetSuite ODBC Drivers 8.1]
APILevel=1
ConnectFunctions=YYN
Driver=ivoa27.so
DriverODBCVer=03.52
FileUsage=0
SQLLevel=1
UsageCount=1

isql 结果:

isql 'NetSuite' 'user' 'password'
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

一个python测试文件:

import pyodbc

try:
    connection = pyodbc.connect('DSN=NetSuite; UID=user; PWD=password')
except e:
    print(e)
else:
    print("Success!")
    cursor = connection.cursor()
    cursor.execute("[SQL statement]")
    row = cursor.fetchone()
    if row:
        print(row)

Python 结果:

python3 test_ns.py
Success!
[SQL results]
ubuntu mariadb odbc netsuite unixodbc
1个回答
0
投票

这个错误可能意味着一些事情:

  1. 用户 mariadb 运行为(像
    mysql
    这样的服务用户)可能没有 ivoa27.so 路径或其父路径的权限。确保它确实如此。
  2. 您已经在 /etc/environment 中设置的环境变量可能不适用于 mariadb 服务单元。在向服务单元添加必要的
    Environment=
    参数后,您可能必须手动编辑该服务单元和守护进程重新加载systemd。
  3. mariadb connect 还允许使用 jdbc jar 文件和一些配置值。您可能会发现走那条路比处理操作系统级别的依赖关系更容易。
© www.soinside.com 2019 - 2024. All rights reserved.