2015-09-03 1 views
0

J'ai essayé d'utiliser unixODBC (version 2.3.2) et le client ODBC MonetDB (version 11.21.5) sur Mac OS X 10.9 et Debian 8, mais je ne peux pas me connecter via ODBC en utilisant isql sur des machines client à un serveur MonetDB fonctionnant sur Debian 8, même si cela fonctionne très bien à partir de la machine serveur.Connexion à MonetDB en utilisant ODBC

Lors de l'émission isql -v voc sur les machines clientes que je reçois le message d'erreur suivant:

[08001][unixODBC][MonetDB][ODBC Driver 11.21.5]Client unable to establish connection [ISQL]ERROR: Could not SQLConnect

Voici mon fichier .odbc.ini:

[voc] 
Driver   = MonetDB 
Description  = MonetDB voc test database 
Servername  = <<left out>> 
Port   = 50000 
UserName  = monetdb 
Password  = monetdb 
Database  = voc 

et mon fichier /opt/local/etc/odbcinst.ini:

[MonetDB] 
Description  = ODBC Driver for MonetDB SQL Server 
Driver   = /usr/local/monetdb/lib/libMonetODBC.so 
Setup   = /usr/local/monetdb/lib/libMonetODBCs.so 
FileUsage  = 1 

Assez intéressant, je suis capable de connecter usin g mclient de machines clientes et la machine serveur et en utilisant la ligne de commande suivante:

mclient -d voc -u monetdb -h <<left out>>

Le serveur est configuré comme suit:

monetdbd get all testing/testDBfarm/

property   value 
hostname   <<left out>> 
dbfarm   testing/testDBfarm/ 
status   monetdbd[37007] 1.7 (Jul2015) is serving this dbfarm 
mserver   /usr/bin/mserver5 
logfile   testing/testDBfarm//merovingian.log 
pidfile   testing/testDBfarm//merovingian.pid 
sockdir   /tmp 
port    50000 
exittimeout  60 
forward   proxy 
discovery  true 
discoveryttl  600 
control   no 
passphrase  <unknown> 
mapisock   /tmp/.s.monetdb.50000 
controlsock  /tmp/.s.merovingian.50000 

Est-ce que je suis manquant ici qui est nécessaire pour permettre aux clients de se connecter à un serveur MonetDB via ODBC?

Répondre

0

Le journal de débogage de isql (en cours d'exécution ODBCDEBUG=/tmp/odbclog isql test) a révélé le problème:
Le pilote ODBC MonetDB a ignoré le paramètre Servername dans mon fichier de configuration.

.odbc.ini:

Servername = LEFT OUT

Log:

SQLConnect: DSN=voc UID=monetdb PWD=monetdb host=localhost port=50000 database=voc.

Il est tout à fait regrettable, que la plupart des pilotes ODBC utilisent un nom différent pour spécifier le nom d'hôte ou l'adresse IP du serveur: Servername, Hôte, ou même serveur (Voir: http://www.unixodbc.org/odbcinst.html)

Ainsi, pour le pilote ODBC de MonetDB, nous devons utiliser Host pour spécifier le nom d'hôte, au lieu de Servername ou Server, comme pour PostgreSQL ou MySQL, par ex.