Nom de source de données introuvable et de pilote non spécifié
J'ai besoin d'aider à corriger une erreur: SQL state IM014 in SQLConnect
et SQL state IM002 in SQLConnect
.
Je lance le même script, l'un sur webserver/remote/
et l'autre à partir de la Machine locale tente d'accéder à la même base de données mais j'obtiens un message d'erreur différents.
Quand je l'exécuter à partir du serveur web je obtenir
SQL error: [unixODBC][Gestionnaire de pilotes]nom de source de Données introuvable et aucun pilote par défaut spécifié, SQL état IM002 dans SQL
où, comme lorsque je l'exécute sur la machine locale-je obtenir
[Microsoft][Gestionnaire de pilotes ODBC] spécifié DSN contient une architecture de discordance entre le Pilote et l'Application
J'ai utilisé le code suivant dans le script php pour se connecter à la base de données Locale
$odbc['dsn'] = "SageLine50v19";
$odbc['user'] = "Peac";
$odbc['pass'] = "XXXX";
$mysql['host'] = "localhost";
$mysql['user'] = "root";
$mysql['pass'] = "";
$mysql['dbname'] = "sagetest";
$mysql['idfield'] = "id";
//Step 1: Connect to the source ODBC database
if ($debug) echo "Connect to " . $odbc['dsn'] . ' as ' . $odbc['user'] . "\n";
$conn = odbc_connect($odbc['dsn'], $odbc['user'], $odbc['pass']);
if (!$conn) {
die("Error connecting to the ODBC database: " . odbc_errormsg());
}
//loop through each table
$allTables = odbc_tables($conn);
$tablesArray = array();
while (odbc_fetch_row($allTables)) {
if (odbc_result($allTables, "TABLE_TYPE") == "TABLE") {
$tablesArray[] = odbc_result($allTables, "TABLE_NAME");
}
}
//print_r($tablesArray); //to list all tables
Mon ODBC.ini ressemble à ci-dessous
[ODBC 32 bit Data Sources]
manager=Sage Line 50 v16 (32 bit)
t=SQL Server Native Client 10.0 (32 bit)
s1=Pervasive ODBC Client Interface (32 bit)
SageLine50v19=Pervasive ODBC Client Interface (32 bit)
[manager]
Driver32=C:\Windows\SysWOW64\S16DBC32.dll
[t]
Driver32=C:\Windows\system32\sqlncli10.dll
[s1]
Driver32=C:\Program Files (x86)\Pervasive Software\PSQL\bin\w3odbcci.dll
[SageLine50v19]
Driver32=C:\Program Files (x86)\Pervasive Software\PSQL\bin\w3odbcci.dll
merci pour la réponse, je ne suis pas sûr de DSN, mais je sais que mon hébergeur a ajouté "odbc" extension. je vais vérifier avec eux à propos de la DSN
Il ne suffit pas d'avoir seulement le pilote ODBC est installé, vous devez également créer une source de données sur le serveur de connexion, le même que sur votre ordinateur local. Si vous déployez le même code, alors vous devez vous assurer que la source de données est configuré de manière identique à celui que vous avez localement.
Est-il une raison de ne pas utiliser la norme
mysqli
ou pdo_mysql
à la place?parce que
ODBC
n'est pas seulement pour MySQL
... Aussi pour ce de sa valeur, KylePorter est correct, j'ai fini par avoir besoin d'écrire une interface pour le 32 -> 64, il s'avère que c'est vraiment pas agréable.OriginalL'auteur Keven | 2014-10-10
Vous devez vous connecter pour publier un commentaire.
Très simple!
Sur le serveur:
SQL error: [unixODBC][Gestionnaire de pilotes]nom de source de Données introuvable et aucun pilote par défaut spécifié, SQL état IM002 dans SQL
Supprimer les données de l'UTILISATEUR nom de la source et de le définir comme un SYSTÈME de nom de source de données.
Allez -> Start -> Paramètres -> Panneau de configuration -> Outils d'Administration ->
Sources de données (ODBC):
- DSN utilisateur : supprimer l'Utilisateur spécifié DSN
- Système DSN : créer un nouveau Système DSN
Sinon essayez d'installer même 32bits ou 64bits version installée localement.
Localement:
[Microsoft][Gestionnaire de pilotes ODBC] spécifié DSN contient une architecture de discordance entre le Pilote et l'Application
32 bits/64 bits de conflit, soit vous installez un pilote 32 bits version ou vous utiliser/configurer le 32 bits sous C:\Windows\SysWoW64\
Essayez d'installer même 32bits ou 64bits version installée localement.
OriginalL'auteur Malbordio
Il y a quelques choses qui peuvent être en cause. Tout d'abord, la DSN doit être déclaré sur les deux machines, sur la machine distante, il doit être un WAN ou LAN en fonction de l'adresse de l'endroit où il vit dans le réseau. Deuxièmement, vous devez vous assurer que vous avez le droit de pilote ODBC, il y a 32 bits pilotes et de pilotes 64 bit. MySQL connector est livré avec.
Je voudrais essayer de retirer le pilote 64 bits, l'ajout de la version 32 bits du pilote et de voir comment ça se passe. Aussi, assurez-vous de tester votre ODBC pour assurez-vous d'avoir une connexion. Si vous après que le temps de vérifier le codage.
OriginalL'auteur Rotti
D'abord ouvrir les outils d'administration de l'option. Vérifiez votre système d'exploitation. Si vous utilisez la version 64 bits puis sélectionnez pilote de 64 bits. Ou il est en 32 bits, puis sélectionnez 32 bits.
S'il vous plaît ne faites pas de source de données utilisateur. Sélectionnez une source de données système.
par exemple, j'ai fait DSN Système, et dont le nom est "empcon1", puis dans le code PHP, vous devez écrire comme ceci:
c'est tout.. Vous aurez connecté.
OriginalL'auteur Yash