Thema: Delphi Tabelle existiert nicht

Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Tabelle existiert nicht

  Alt 20. Mär 2017, 18:14
Datenbank: MySQL • Version: 5.7.xx • Zugriff über: FireDac
Hi zusammen

Nachdem von den da angesprochenen Problemen das letzte, die vermisste Tabelle, übriggeblieben ist, mach ich mal einen neuen Thread auf.
Die Fehlermeldung, notabene bei offener Verbindung und nachweislich existierender Tabelle:
Zitat:
Im Projekt ContentMasterDXE8.exe ist eine Exception der Klasse EMySQLNativeException mit der Meldung '[FireDAC][Phys][MySQL] Table 'contentmasterdata.kategorien_tabelle' doesn't exist' aufgetreten.
In der Hoffnung, mehr zu erfahren über das, was so abläuft, hab ich eine FDMoniFlatFileClientLink-Komponente auf dem Datenmodul abgelegt. Und das hat mir dann doch noch was genützt - allerdings erst, nachdem ich FDConnectionMySql.ConnectionDefName festgelegt und meine bisherige temporäre Connection deaktiviert hatte.

Die Monitor-Komponente erzeugt standardmässig ein Tracefile. Ich hab das Ding umbenannt und den Pfad in meinen Anwendungsordner verlegt; die so erzeugte txt-Datei finden interessierte im Anhang. Geöffnet sollte sie eventuell in einem Memo ohne Wordwrap oder einer vergleichbaren Umgebung(Notepad etc).

Was mir erstmal auffällt:
Zitat:
. mysql_get_client_info [Ver="5.5.9"]
. mysql_init
. mysql_options [option=1, arg=0]
. mysql_real_connect [host="localhost", user="root", passwd="***", db="contentmasterdata", port=3306, clientflag=198158]
. mysql_get_server_info [Ver="5.7.9-log"]
. mysql_set_character_set [cs_name="utf8"]
Mit mysql_get_client_info nehme ich mal an, ist die libmysql.dll gemeint. Tatsächlich liegen im Windowsverzeichnis zwei der Dinger. Ich hatte allerdings gehofft, wenn ich Vendorlib der Connectionkomponente explizit im OI angebe, dass dann auch diese benutzt wird - da hab ich offensichtlich falsch gedacht.

Interessant wird es ab Zeile 297: Ab da sind die Tabellen aufgelistet, die ich per Show Tables vom Server anfordere.

Dazu muss erstmal gesagt werden: Nach der Installation des Servers habe ich sämtliche Serverdatenbanken, sprich, das komplette Datadir nach F:\Databases1 kopiert - und eben nicht verschoben, damit ich die Originale noch habe, falls irgendwas schiefgeht. Und genau da liegt meine DB "contentmasterdata". Der Server kann also die Infos, die er mir per "Show Tables" zurückliefert, nur von da haben.
Und jetzt wirds geradezu spannend, fast so, wie bei Kommissar Maigret oder Hercule Poirot :da liegt auch die so hartnäckig vermisste Tabelle 'contentmasterdata.kategorien_tabelle'!

Allerdings: Es gibt unter MySQL nicht nur eine Inidatei, sondern meines Wissens mindestens drei (3)!

In C:\ProgramData\MySQL sind dies:
  • MySQL Server 5.7my_2016-04-27T07-29-12.ini und (datadir=C:/ProgramData/MySQL/MySQL Server 5.7\Data)
  • MySQL Server 5.7my_2016-04-20T14-20-39.ini und (datadir=C:/ProgramData/MySQL/MySQL Server 5.7\Data)
in C:\ProgramData\MySQL\MySQL Server 5.7
my.ini (datadir=F:\Databases 1)
Kursiv und in Klammern jeweils die Pfadangabe zum Data-Verzeichnis, wie sie in den einzelnen Ini's angegeben ist.

Was mich etwas (stark) verblüfft, ist, dass MySQL in mehreren verschiedenen Inidateien den Datadir-Pfad ablegt und nicht etwa 2 Pfade (Serverpath & Userpath) bereithält

So, wie ich das sehe, würde es genügen, wenn ich die Pfadangaben so abändere, dass sie dahin zeigen, wo nebst den Serverdatenbanken ach meine DB liegt. Oder gibt es dabei noch zusätzlich etwas zu beachten?

Eines ist sicher: ohne den 'guten alten' SQLMonitor wäre ich jetzt noch mit meinen Ratespielchen beschäftigt...

Gruss
Delbor
Angehängte Dateien
Dateityp: txt SQLMonitor.txt (64,3 KB, 7x aufgerufen)
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (20. Mär 2017 um 18:18 Uhr)
  Mit Zitat antworten Zitat