Обычно я получаю доступ к соединению ODBC через сервер CentOS и пытаюсь установить такое же соединение локально на моем ноутбуке Ubuntu Trusty. Насколько я могу судить, я правильно все продублировал на двух машинах, но просто не могу заставить его работать. У меня он работал на старом ноутбуке в той же сети, поэтому я думаю, что могу исключить брандмауэры / маршрутизацию / и т.д.

Когда я пытаюсь проверить соединение, я получаю:

me@T420:~/tmp$ iodbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0709.0909

Enter ODBC connect string (? shows list): ?

DSN                              | Driver                                  
------------------------------------------------------------------------------
NZSQL_SERVER                    | NetezzaSQL                              

Enter ODBC connect string (? shows list): NZSQL_SERVER
1: SQLDriverConnect = ������ (33) SQLSTATE=
1: ODBC_Connect = ������ (33) SQLSTATE=

мой /etc/odbcinst.ini:

Хорошего дня. Patrickmc@patrickmc-ThinkPad-T420:~/tmp $ cat /etc/odbcinst.ini

[ODBC Drivers]
NetezzaSQL = Installed

[NetezzaSQL]
Description = Netezza ODBC Driver
Driver = /usr/local/nz/lib64/libnzodbc.so
Setup = /usr/local/nz/lib64/libnzodbc.so
FileUsage = 1
APILevel = 1
ConnectFunctions = YYN
DriverODBCVer = 03.50
UnicodeTranslationOption = utf8
CharacterTranslationOption = all
PreFetch = 256
Socket = 8192
LogPath = /tmp
DebugLogging = false

[ODBC]
Trace = No

и мой /etc/odbc.ini:

;
;  odbc.ini
;
[ODBC Data Sources]
NZSQL_SERVER = NetezzaSQL


[NZSQL_SERVER]
Driver                = /usr/local/nz/lib64/libnzodbc.so
Description           = NetezzaSQL ODBC
Servername            = db.mynetwork.net
Port                  = 5480
Database              = db_1
Username              = db_user
Password              = db_pass
ReadOnly              = false
ShowSystemTables      = true
LegacySQLTables       = false
LoginTimeout          = 0
QueryTimeout          = 0
DateFormat            = 1
NumericAsChar         = false
SQLBitOneZero         = false
StripCRLF             = false
securityLevel         = preferredUnSecured
caCertFile            =

2 ответа2

0

В вашем файле odbc.ini попробуйте изменить эту строку:

Driver                = /usr/local/nz/lib64/libnzodbc.so

к этому:

Driver                = NetezzaSQL

и посмотрим, поможет ли это.

ОБНОВИТЬ:

Я никогда не использовал iodbctest но быстрый поиск показывает, что вы можете указывать неправильно. Вот фрагмент этой страницы руководства:

$ iodbctest
OpenLink ODBC Demonstration program
This program shows an interactive SQL processor

Enter ODBC connect string (? shows list): ?

DSN                              | Driver
-----------------------------------------------------------------
ora9                             | OpenLink Generic ODBC Driver
mysql                            | OpenLink Generic ODBC Driver
mysqllite                        | OpenLink Lite for MySQL
myodbc                           | MyODBC Driver
pgsql                            | OpenLink Generic ODBC Driver
tds                              | OpenLink Generic ODBC Driver

Enter ODBC connect string (? shows list): DSN=ora9;PWD=tiger
Driver: 05.20.0316 OpenLink Generic ODBC Driver (oplodbc.so)

SQL>

Похоже, вам нужно указать строку подключения, а не только DSN.

Если это не сработает, попробуйте следующее:

  • ls -l /usr/local/nz/lib64/libnzodbc.so чтобы проверить драйвер

  • Убедитесь, что у вас нет файла ~/.odbc.ini или ODBCINI

  • Попробуйте включить DebugLogging (odbcinst.ini) и Trace / TraceFile (odbc.ini)

0

Моя догадка была бы библиотечной разницей между двумя машинами.

Убедитесь, что у вас есть только один менеджер драйверов ODBC (iODBC - это то, что вы изобразили; UnixODBC также может быть установлен), по крайней мере, в активном LD_LIBRARY_PATH.

Если это не проясняет ситуацию, то включение трассировки ODBC и / или ведения журнала отладки драйвера, вероятно, даст больше информации.

В настоящее время кажется, что драйвер возвращает ошибку в кодовой странице, отличной от той, которую ожидает диспетчер драйверов, и поэтому вы получаете несколько символов "неизвестный символ". Мы видим номер ошибки - 33 - который соответствует «Атрибуты сервера и / или порта пусты», хотя они установлены в DSN, что указывает на другие возможные проблемы среды (Установлен ли $ ODBCINI? Это указывает на /etc/odbc.ini?)....

Если вы сомневаетесь, возможно, посмотрите официальные документы Netezza !

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .