在Linux客户端上安装unixODBC和Netezza驱动程序并根据文档配置〜/ .odbcinst.ini和〜/ .odbc.ini数据源后,尝试通过某些工具连接到Netezza PureData仓库可能会产生错误类似于:
(Error) ('HY000', '[HY000] [unixODBC]Error occurred while loading translation library (45) (SQLDriverConnect)')
例如,Python SQLAlchemy库通过RHEL7盒上的DBAPI连接输出(虽然已经从其他发行版和其他工具报告过)。
有谁知道发生了什么的细节以及如何正确解决它?
答案 0 :(得分:1)
解决此问题的一种方法是将以下行添加到〜/ .odbc.ini文件的特定数据源部分:
TranslationDLL=
TranslationName=
TranslationOption=
我不知道其他可能带来的影响(例如非英语错误消息或使用不常见的字符编码)。
答案 1 :(得分:1)
在odbc.ini中将UnicodeTranslationOption设置为UTF16而不是UTF8。确保它在'odbcinst -j'识别的odbc.ini中以及主目录中名为'odbc.ini'的备用副本中具有该设置。最新的netezza文件似乎读取配置而不是隐藏文件'.odbc.ini'
答案 2 :(得分:1)
额外信息:我遇到了类似的错误消息。
原来我为/etc/odbcinst.ini
驱动程序UnicodeTranslationOption=utf8
设置了[NetezzaSQL]
。
还使用了错误的(32位)驱动程序。
使用/etc/odbcinst.ini修复:
[NetezzaSQL]
Driver = /opt/netezza/lib64/libnzodbc.so
DebugLogging = true
LogPath = /tmp
Trace = 0
TraceAutoStop = 0
TraceFile = /tmp/trace.log
UsageCount = 1
答案 3 :(得分:0)
您也可以enable Netezza ODBC debug log找出详细的错误。在odbcinst.ini中,设置 DebugLogging = true