Herstellen einer Verbindung zu einer IBM AS/400 DB2-Datenbank
Ich versuche, eine Verbindung zu einem client der IBM AS/400 DB2-Datenbank von einem Ubuntu Server mit Hilfe von PHP - ODBC-Treiber. Ich habe die unixODBC installiert. Meine odbcinst.ini sieht wie folgt aus:
[IBM DB2 ODBC DRIVER]
Description = ODBC 5.1 Driver for Database
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
FileUsage = 1
Und meine odbc.ini sieht wie folgt aus:
[IBM DB2 ODBC DRIVER]
Driver = IBM DB2 ODBC DRIVER
Description = ODBC 5.1 Driver DSN
Nun, meinen code zu verbinden ist:
$server = '12.345.678.90' //IP
$port = '446' //PORT
$username = 'my_username';
$password = 'my_password';
$connect = odbc_connect("DRIVER = {IBM DB2 ODBC DRIVER};System=$server:$port;Uid=$username;Pwd=$password;", $username, $password);
if(!$connect)
echo 'Cannot Connect!';
else
echo 'Connected!';
Den Fehler den ich bekomme, ist diese:
Warning: odbc_connect(): SQL Error: [unixODBC][MySQL][ODBC 5.1 Driver]Access denied for user 'my_username'@'localhost' (using password: YES), SQL state S1000 in SQLConnect
Ich habe versucht, über den PDO-ODBC-Treiber auch. Dies ist die Fehlermeldung die ich bekomme:
$connect = new PDO("odbc:DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=$server;PORT=$port;Uid=$username;Pwd=$password");
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] SQLDriverConnect: 1045 [unixODBC][MySQL][ODBC 5.1 Driver]Access denied for user 'my_username'@'localhost' (using password: YES)' in /var/www/test_file.php Stack trace: #0 /var/www/test_file.php: PDO->__construct('odbc:DRIVER={IB...') #1 {main} thrown in /var/www/test_file.php
Mache ich etwas falsch hier? Brauche ich andere Treiber, da der Benutzername und das Kennwort korrekt sind, ich sah das client-Protokoll in der Datenbank mit dem Benutzernamen und Passwort habe ich. Ich dachte, der Benutzername und das Passwort waren falsch, weil Sie sagt Access Denied for user. Es scheint nicht der Fall zu sein. Es könnte auch etwas anderes sein, dass ist falsch.
Danke für Eure Hilfe. Ich hoffe, dass ich das problem sehr klar. Danke!
InformationsquelleAutor sulavvr | 2013-10-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre odbcinst.ini-Datei ist, sagen Sie den MySQL-ODBC-Treiber:
aber Sie müssen verwenden Sie die iSeries Access ODBC Treiber. Der Grund, warum Sie werden immer ein
Access Denied for User
Nachricht ist, weil Sie versuchen, eine Verbindung zu Ihrer MySQL-Datenbank mit Anmeldeinformationen für das IBM i.Hier sind Schritt für Schritt Anweisungen, wie Sie eine Verbindung zu DB2 für i (auf der IBM i) auf Ubuntu:
Laden Sie die Kostenlose
iSeriesAccess-6.1.0-1.2.i386.rpm
Datei von IBM (Sie müssen ein kostenloses Konto anlegen, um es zu bekommen - und ich bin sicher, es gibt eine neuere version als 6.1.0-1.2)Umwandeln der RPM-Datei, um etwas, das Ubuntu versteht:
sudo alien iSeriesAccess-6.1.0-1.2.i386.rpm
Installieren Sie das erzeugte .deb:
sudo dpkg -i iseriesaccess_6.1.0-2.2_i386.deb
Kopieren Sie die installierten iSeries-Bibliotheken, wo Ubuntu erwartet Sie:
sudo cp /opt/ibm/iSeriesAccess/lib/* /usr/lib
Bearbeiten Sie die /etc/odbc.ini - Datei enthalten:
Bearbeiten Sie die /etc/odbcinst.ini - Datei enthalten:
Und dann, um die Verbindung mit PDO:
Der einzige Unterschied zwischen den odbcinst.ini, die Sie zur Verfügung gestellt, und mir ist: Driver = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so Setup = /opt/ibm/iSeriesAccess/lib64/libcwbodc.so Alles andere war das gleiche. Ich habe versucht, eine Verbindung mit PDO, aber die Fehlermeldung die ich bekam, war, dass die libcwbodbc.so wurde nicht gefunden. Irgendeine Idee? Danke.
Sie könnten in Erwägung ziehen, das Naming-Einstellung zu 1. IBM i-Entwickler, die in der Regel betrachten es als best practice die Nutzung der Bibliothek-Liste (ähnlich wie ein Pfad). System vs SQL-Naming-Teil 1 & Teil 2
Wenn Ihr server v6.1 oder v7.1, und up-to-date (TR 5+ ?) dann "naming system" ermöglicht das schema.Tabelle notation verwendet, die in "sql-naming".
(Anmerkung: Sie werden vielleicht überrascht sein zu erfahren, dass man AS/400 ist wohl nicht wirklich ein AS/400. IBM ausgeliefert, die Letzte im Jahr 2000. Die Produktlinie wurde re-branded als iSeries, aber später zusammen mit pSeries, und ist derzeit bekannt als Power Systeme mit IBM i.)
InformationsquelleAutor Benny Hill
Musste ich IBM/DB2 access-arbeiten mit ODBC /PHP auf einem Ubuntu-box vor kurzem.
Wahrscheinlich können Sie diese anpassen für die meisten anderen Distributionen:
Hier ist, wie ich es geschafft habe:
[1] Laden Sie eine der folgenden, abhängig von Ihrer gewünschten DB2 version und Architektur
Diese erhalten Sie von der IBM-website, oder von hier:
http://www.mmnt.net/db/0/0/public.dhe.ibm.com/as400
Dann installieren Sie IBM as400 client Access mit so etwas wie dieses:
[2] Java Installieren (falls erforderlich)
[3] Install UNIXODBC -
[4] Installieren, PHP ODBC
[5] Ldconfig
Erstellen Sie eine Datei
/etc/ld.so.conf.d/iSeriesAccess.conf
mit dieser Zeile:Führen Sie dann die folgenden:
[6] Registrieren Treiber
[7] Testen Sie es mit etwas PHP-code
InformationsquelleAutor Silas Palmer