我正在尝试在 Linux Red Hat(英特尔 64 位架构)上使用 pyodbc(用于 ODBC 的 Python 接口)连接到 IBM iSeries。
以下是我所做的:
安装gcc-c++(编译pyodbc需要)、unixODBC、unixODBC-devel
安装 iSeriesAccess-6.1.0-1.0.x86_64.rpm:
sudo rpm -ivh http://ftpmirror.your.org/pub/misc/ftp.software.ibm.com/as400/iSeriesAccess-6.1.0-1.0.x86_64.rpm --nodeps
- 将驱动程序附加到 unixODBC
odbcinst -i -d -f /opt/ibm/iSeriesAccess/unixodbcregistration64
- 由于我对库有一些问题,我符号链接它们:
sudo ln -s /opt/ibm/iSeriesAccess/lib64/libcwb* /usr/lib/
- 我配置了 ODBC 数据源来访问 AS400 的数据库:/etc/odbc.ini:
[AS400]
Description = Database iSeries
Driver = iSeries Access ODBC Driver
System = XXX.XXX.XXX.XXX
Port = 8471
UserID = XXXXXX
Password = XXXXXX
Naming = 1
Database = XXXXXXXXX
ConnectionType = 0
CommitMode = 2
BlockFetch = 1
BlockSizeKB = 512
- 我测试了连接:
> isql -v AS400
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
我能够连接,但是在运行任何 SQL 查询时,我得到Segmentation fault (core dumped)
.
通过检查 /var/log/messages 我看到了这个:
isql[5767]: segfault at 7f6fdb30020e ip 00007f6ed372ff71 sp 00007ffcce17d5f0 error 4 in libcwbcore.so[7f6ed369e000+11c000]
我想重新安装一个不同的驱动程序(例如 iSeriesAccess-7.1.0-1.0x86_64.rpm),但我找不到它。
该工具不再称为 iSeries Access,而是 IBM i Access Client Solutions。看这里,然后向下滚动到 Linux 应用程序包的页面底部。但是,页面上的最后一行说可选包只能通过 ESS 获得。因此,您或您的管理员需要为您获取该信息。