Não é possível fazer conexão ODBC no Ubuntu 14.04

0

Eu geralmente acesso uma conexão ODBC através de um servidor CentOS, e estou tentando fazer a mesma conexão localmente no meu laptop Ubuntu Trusty. Tanto quanto eu posso dizer que eu dupliquei tudo corretamente através das duas máquinas, mas eu simplesmente não consigo fazê-lo funcionar. Eu estava trabalhando em um laptop antigo na mesma rede, então acho que posso descartar firewalls / roteamento / etc.

Quando tento testar a conexão, obtenho:

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=

meu /etc/odbcinst.ini:

Tenha um bom dia.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

e meu /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            =
    
por Patrick McCarthy 22.04.2015 / 16:11

2 respostas

0

No seu arquivo odbc.ini , tente alterar esta linha:

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

para isso:

Driver                = NetezzaSQL

e veja se isso ajuda.

UPDATE:

Eu nunca usei iodbctest , mas uma pesquisa rápida indica que você pode estar especificando as coisas incorretamente. Aqui está um trecho de esta página de manual :

$ 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>

Parece que você precisa especificar a string de conexão , não apenas o DSN.

Se isso não funcionar, você deve tentar:

  • ls -l /usr/local/nz/lib64/libnzodbc.so para verificar o driver

  • Verifique se você não tem o arquivo ~/.odbc.ini ou o ODBCINI var set

  • Tente ativar o DebugLogging ( odbcinst.ini ) e o Trace / TraceFile ( odbc.ini )

por 22.04.2015 / 18:43
0

Meu palpite seria uma diferença de biblioteca entre as duas máquinas.

Certifique-se de ter apenas um gerenciador de driver ODBC (o iODBC é o que você imaginou; o UnixODBC também pode ser instalado), pelo menos no LD_LIBRARY_ATH ativo.

Se isso não esclarecer as coisas, habilitar o ODBC Tracing e / ou o Driver Debug Logging provavelmente trará mais informações à luz.

Atualmente, parece que o driver está retornando um erro em uma página de códigos diferente da esperada pelo gerenciador de drivers e, portanto, você obtém os vários glifos de "caracteres desconhecidos". Nós vemos um número de erro - 33 - que corresponde a "Servidor e / ou atributos de porta estão vazios" embora eles estejam definidos no DSN, o que sugere outros possíveis problemas ambientais (Is $ ODBCINI set? Ele aponta para / etc /odbc.ini?) ....

Em caso de dúvida, talvez dê uma olhada em os documentos oficiais do Netezza !

    
por 19.08.2015 / 19:04