我正在尝试使用 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]
这个错误可能意味着一些事情:
mysql
这样的服务用户)可能没有 ivoa27.so 路径或其父路径的权限。确保它确实如此。Environment=
参数后,您可能必须手动编辑该服务单元和守护进程重新加载systemd。