2010-04-03 5 views
1

Je rencontre des problèmes majeurs de connexion à ma base de données via ODBC.Problème de chaîne de connexion ODBC

Le db est local (mais j'ai un miroir sur une machine virtuelle), donc je suis en train d'utiliser le connectionstring:

dsn = MonetDB; host = TARBELL

où TARBELL est le nom de mon ordinateur. Cependant, il ne se connecte pas. Mais, cette chaîne fait:

dsn = MonetDB; host = localhost

tout comme

dsn = MonetDB

Quelqu'un peut-il expliquer cela? Je suis complètement perdu. J'ai abattu mes pare-feu (au moins jusqu'à ce que je compris), ce qui ne peut pas être le problème.

Je souhaiterai éventuellement remplacer TARBELL par la machine virtuelle en miroir exécutant une autre instance de la base de données.

Un grand merci, Brett

+0

Si je devais parier une supposition, je dirais que l'entrée d'hôte fait référence à la machine sur laquelle le DSN a été créé, non le serveur vers lequel pointe le DSN. – Thomas

Répondre

0

J'ai jamais vu un paramètre "hôte" pour une chaîne de connexion de type DSN. DSN sont stockés avec l'utilisateur, le système ou sous forme de fichier. La façon dont vous avez référencé votre DSN ici, il est soit stocké sous votre compte d'utilisateur ou avec le système. Avec un DSN, toutes les informations d'identification et les informations sur le serveur et le pilote à utiliser sont stockées dans le DSN. Si vous voulez contrôler sur ces paramètres, vous devriez envisager une DSN chaîne de connexion -moins comme ceci:

"Driver={Mysql}; Server=[server_name];Port=[port_number]; Database=[database_name];UID=[username]; PWD=[password]" 
2

Je peux recommander connectionstrings.com pour plus de détails sur la syntaxe prise en charge sur l'ensemble des fournisseurs ADO.NET pris en charge.

1

DNS résout généralement TARBALL et localhost différemment. Vous pouvez le voir avec ping:

c:\>ping tarball 
Pinging tarball [192.168.1.99] with 32 bytes of data: 
       ^^^^^^^^^^^^ 

c:\>ping localhost 
Pinging tarball [127.0.0.1] with 32 bytes of data: 
       ^^^^^^^^^ 

Le nom de l'ordinateur résout à l'adresse IP externe, alors que localhost résout au 127.0.0.1 IP spéciale qui pointe toujours à la machine locale. Certaines installations de MySQL n'écoutent que sur localhost, donc si vous spécifiez le nom de l'ordinateur, elles cessent d'écouter.

Ce comportement est configuré en utilisant l'option bind-address:

--bind-address=127.0.0.1 

Ou l'équivalent (MySQL utilise également le service DNS pour résoudre les noms d'hôtes):

--bind-address=localhost 

Pour que le serveur écoute sur toutes les interfaces, spécifiez :

--bind-address=0.0.0.0 

Sous Windows, MySQL lit les options de configuration m:

WINDIR\my.ini, WINDIR\my.cnf 
C:\my.ini, C:\my.cnf 
INSTALLDIR\my.ini, INSTALLDIR\my.cnf 

Voir la MySQL manual pages pour un peu plus d'informations.

1

figuré je posterais une réponse à ceci ici puisque je l'ai trouvé en cherchant une chaîne de connexion de Windows monetdb. c'est la chaîne de conn j'utilise et travaille pour monetdb 5:

DRIVER=MonetDB ODBC Driver;PORT=50000;HOST=<your host>;DATABASE=<your db>;UID=monetdb;PWD=monetdb 
+0

Merci, lorsque vous ne parvenez pas à définir la chaîne de connexion, l'erreur est ** SQLSetConnectAtt du pilote a échoué ** certaines entrées parlent d'installer x32 et x64 odbc version du pilote (sur un x64, bien sûr) et plus aucune entrée trouvée. – GBrian

Questions connexes