Probleme beim Import/Abgleich von Daten von MySQL per ODBC

Artikel KBAD001339

Betrifft:
cRM 9
Kategorie:
Im-/Export/Abgleich
Überarbeitet:
07.08.2018

Beim Import/Abgleich mit einem MySQL Server kann es vorkommen, dass der Import nicht erfolgreich durchgeführt werden kann. Nach Auswahl der zu importierenden/abzugleichenden Tabelle zeigt der Import-Assistent die folgende Hinweis-Meldung an:

Es ist ein Fehler aufgetreten.
Die Datenbankschnittstelle meldet:
Die Datenbank konnte nicht geöffnet werden.​

Auf dem gleichen System ist der Zugriff auf die MySQL Datenbank jedoch problemlos möglich?

Aufschluss über dieses Verhalten liefert eine Debwin Log-Datei, in welcher der genaue Fehler protokolliert ist. Die Ausgaben sehen wie folgt aus:

...
cmda09:11:38:57.966 00000B28      server: (ODBC)  database: (MySQL Server)  table: ("country")
cmda09:11:38:57.966 00000B28      CDAOdbc::OpenConnection()->:SELECT * FROM "country" 
cmda09:11:38:57.982 00000B28      SQL_SCROLL_OPTIONS = 00000011 (nResult=0)
cmda09:11:38:57.982 00000B28      CDAOdbc::OpenConnection()->Excecute...
cmda09:11:38:57.982 00000B28      SAException (42000 [MySQL][ODBC 5.3(a) Driver][mysqld-5.6.15-enterprise-commercial-advanced]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use ne
cmda09:ar '"country"' at line 1)
cmda09:11:38:57.982 00000B28      CDAOdbc::CloseDatabase
...

Wie zu erkennen ist, schlägt die Abfrage der Datensätze der Tabelle "country" fehl. Ursache hierfür ist die Syntax der SQL-Abfrage, welche der cRM an den ODBC-Treiber übergibt:

SELECT * FROM "country"

Der MySQL Server kann mit den doppelten Anführungszeichen " nicht umgehen und erwartet an dieser Stelle sogenannte Backticks (`). D.h. die von MySQL erwartete Abfrage müsste wie folgt aussehen:
SELECT * FROM `country`

Um den Zugriff dennoch zu erhalten, muss in der Konfiguration des ODBC-Treibers die Eigenschaft "Initial Statement" mit folgenden Inhalt gefüllt werden:
SET SESSION sql_mode='ansi'



Anschließend kann die SQL Abfrage an den ODBC-Treiber korrekt übergeben und interpretiert werden, so dass dem Import/Abgleich nichts mehr im Wege steht.


Hinweis: combit macht keine Angaben zu einer bestimmten Eignung obiger Informationen. Irrtümer und Fehler bleiben ausdrücklich vorbehalten, die Angaben erfolgen ohne Gewähr. Die Angaben stellen nur Beschreibungen dar und enthalten keine Garantie der Beschaffenheit der Produkte. Die Informationen können z.T. auch ein Versuch sein, Ihnen bei einer Aufgabenstellung zu helfen, selbst wenn das Produkt eigentlich nicht für diesen speziellen Zweck vorgesehen wurde.

+49 (0) 7531 90 60 10