从Mac OS X连接到Vertica时连接字符串无效
我想在我的Mac OS X本地机器上用Python开发,并连接到我网络中的Vertica数据库。
我下载了Vertica的Mac驱动,并按照说明进行了设置。当我用iODBC测试时,出现了:
$ iodbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0607.1008
Enter ODBC connect string (? shows list): ?
DSN | Driver
------------------------------------------------------------------------------
VerticaDSN | Vertica
Enter ODBC connect string (? shows list): VerticaDSN
1: SQLDriverConnect = [DSI] The error message InvalidConnStr could not be found in the en-US locale. Check that /en-US/ODBCMessages.xml exists. (-1) SQLSTATE=HY000
当我用unixODBC测试时,出现了不同的错误:
$ isql -v VerticaDSN user pw
[S1000][unixODBC][DSI] The error message NoSQLGetPrivateProfileString could not be found in the en-US locale. Check that /en-US/ODBCMessages.xml exists.
[ISQL]ERROR: Could not SQLConnect
后者的错误应该是因为缺少vertica.ini文件,但我确实添加了vertica.ini,并把它的目录导出到VERTICAINI环境变量中。我的vertica.ini文件内容如下:
[Driver]
DriverManagerEncoding=UTF-32
ODBCInstLib=/usr/lib/libiodbc.2.dylib
ErrorMessagesPath=/Users/rmedri/Library/ODBC/vertica/lib64
LogLevel=4
LogPath=/Users/rmedri
这是我的odbc.ini文件(在~/Library/ODBC/目录下):
[ODBC Data Sources]
VerticaDSN = Vertica
[VerticaDSN]
Driver = /Users/rmedri/Library/ODBC/vertica/lib64/libverticaodbc.dylib
Database = vbit
Servername = vertica-prod.<xxxx>.<xxxx>.com
UID = user
PWD = pw
Port = 5433
我花了好几个小时在这上面,但还是搞不定。任何建议都很受欢迎,包括从Mac OS X上的Python连接Vertica的其他方法。
1 个回答
2
我知道我们经历了一些尝试和错误,但最后我们发现需要的是:
DriverManagerEncoding=UTF-16
而不是在 vertica.ini 文件中使用 UTF-32。