MySQL50Connector und MysqlQuery

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
wastl
Beiträge: 28
Registriert: Mo 29. Okt 2007, 17:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Regensburg
Kontaktdaten:

MySQL50Connector und MysqlQuery

Beitrag von wastl »

Hallo,

Ich habe ein Projekt geschrieben mit Lazarus auf WinXP. Dort funktionierte es auch wunderbar.
Habe es dann auf meine Linuxkiste kopiert und kann es dort auch compilieren. Allerdings willte der mysql41connector nicht mit der installierten libmysqlclient.
Da es für Ubuntu nur mysql5 gibt ist diese auch von mysql5.
Also habe ich den mysql41connector durch einen mysql50connector ersetzt und diesen meinen Datenbankobjekten (1 Query und ein Datasource und ein SQLTransaction Objekt) als Quelle gegeben statt dem mysql41connector.
Jetzt kann ich zwar mein Projekt starten aber sobald versucht wird die erste Abfrage auszuführen bekomme ich einen Fehler das er einen Feldnamen nicht findet. Dieser Fehler trott auf bei der Verarbeitung der von der Abfrage gelieferten Daten wo die Funktion FieldByName verwendet wird.
Ich habe herausgefunden das es wohl daran liegt das die Abfrage nicht aktiviert werden kann was aber seltsamerweise keinen Fehler wirft. Ich kann die Abfrage auch im Objektinspektir nicht mehr aktiv setzen was vorher ging. Offenbar muss es irgendeine Einstellung geben vom mysql50connector oder Parameter damit das wieder klappt.
Wer weiss rat?

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Versuch mal einen symbolischen Link von dem mysql5.so auf den mysql41.so zu legen.

ln -s mysql5.so mysql41.so

Damit gaukelt er Lazarus vor, die alte Client-Lib zu haben. Das könnte Abhilfe schaffen. Die Lib's sollten in /usr/lib zu finden sein.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

wastl
Beiträge: 28
Registriert: Mo 29. Okt 2007, 17:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Regensburg
Kontaktdaten:

Beitrag von wastl »

libmysqlclient heisst immer libmysqlclient.so.irgendwas und es gibt einen symlink namens libmysqlcleint.so. Aus dem Dateinamen kann man nicht direkt auf die mysql version schliessen.
Lazarus liest demnach die Versioninfo der lib aus.
Habe mal versucht eine libmysqlclient.so von mysql 4.0 mit dem mysql40connector zu verwendet mit dem gleichen Erfolg :(
Woran kann das liegen?

lg
wastl

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Hast Du schonmal mit den ZEOS-Komponenten probiert?

Die arbeiten problemlos auf beiden Plattformen und sind hier unter "Links" zu finden. Die kommen mit den gängigen SQL-Servern gut zurecht und haben auch die entsprechenden Client-Libs gleich dabei.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

SQLDb scheint mittlerweile auch ganz gut mit mysql klarzukommen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6855
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: MySQL50Connector und MysqlQuery

Beitrag von af0815 »

wastl hat geschrieben:Hallo,

Ich habe ein Projekt geschrieben mit Lazarus auf WinXP. Dort funktionierte es auch wunderbar.
.....
Ich habe herausgefunden das es wohl daran liegt das die Abfrage nicht aktiviert werden kann was aber seltsamerweise keinen Fehler wirft. Ich kann die Abfrage auch im Objektinspektir nicht mehr aktiv setzen was vorher ging. Offenbar muss es irgendeine Einstellung geben vom mysql50connector oder Parameter damit das wieder klappt.
Wer weiss rat?
Ich habe es bei meinem Studien zu LazInfos auch schon beobachtet. Abhilfe war NUR löschen der Connection, Transaktion und Query, anschliessend erst der Port und dann die Komponenten wieder drauf. War leider nicht rational Nachvollziehbar. Wenn du die Komponenten nur zur Laufzeit erzeugst war der Effekt nicht da.

Vielleicht hilft ein veröffentlichen VOR dem Port, da irgendwo Informationen hängen bleiben, die nicht Portabel erscheinen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Stimmt Andi,

wieder die Macke mit den nonvisible Components und ihren Property-Editoren. Ich hoffe, das Problem wird bei der nächsten Release mal behoben. Erschwert die Arbeit mit dem System doch erheblich.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

wastl
Beiträge: 28
Registriert: Mo 29. Okt 2007, 17:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Regensburg
Kontaktdaten:

Beitrag von wastl »

hm :(

habe nun alle Datenbank-Komponenten aus dem Projekt gelöscht. Anschliessend veröffentlicht und danach auf die Linux Maschine kopiert. Das veröffentlichte Projekt (sogar im anderen Ordner gelegt) dann dort iin Laz geöffnet und die Komponenten wieder hinzugefügt und deren Properties konfiguriert.
Ergebnis: wieder das selbe..die Mysql40connection connected zum mysqlserver aber die SQLQuery1 lässt sich nicht mehr aktivieren...
Hab ich da jetzt irgendeinen Fehler gemacht? Zumal af0815 schrieb danach sollte es funzen...

lg
wastl

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6855
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

wastl hat geschrieben: Ergebnis: wieder das selbe..die Mysql40connection connected zum mysqlserver aber die SQLQuery1 lässt sich nicht mehr aktivieren...
Hab ich da jetzt irgendeinen Fehler gemacht? Zumal af0815 schrieb danach sollte es funzen...
Zumindest hat es bei mir so geholfen.

Die Frage für mich ist, wie stellst du fest, das die Verbindung funktioniert ? Zusätzlich: Was schreibt der MySQL ins LOG, kommt dort ein SQL-Statement überhaupt an oder gibt es vorher schon Probleme ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wastl
Beiträge: 28
Registriert: Mo 29. Okt 2007, 17:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Regensburg
Kontaktdaten:

Beitrag von wastl »

laut mysql logfile auf dem Datenbankserver in dem Moment wo ich das Attribt "conected" der msql40connection auf true setze:

Code: Alles auswählen

071030 12:49:02    3202 Connect     root@cag.cronon.org ON 
                   3202 Init DB     msndb
laut mysql logfile auf dem Datenbankserver in dem Moment wo ich versuche die SQLQuery1 zu aktivieren:

Code: Alles auswählen

071030 12:50:47    3202 Query       SELECT * FROM msns
                   3202 Query       SHOW INDEX FROM msns
Also wird die Abfrage durchaus ausgeführt. Beim Programm bzw Lazarus kommt aber keine Ergebnismenge an. Wie gesagt mit den selben Komponenten unter Windows XP und auch dem gleichen Datenbankserver und der gleichen DB funktioniert es!

lg
wastl

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6855
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Version Lazarus Win/Ubuntu ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wastl
Beiträge: 28
Registriert: Mo 29. Okt 2007, 17:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Regensburg
Kontaktdaten:

Beitrag von wastl »

Ubuntu:

Lazarus 0.9.23 Beta vom 29..10.07 i386-linux-gtk

Windows:

Lazarus 0.9.23 Beta vom 29.10.2007 i386-win32-win32/win64 SVN-Revision 12622

beide am gleichen Tag vom gleichen Mirror gezogen und installiert...

lg
wastl

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Hast Du den Port für mysql unter Ubuntu freigegeben? Wenn der durch die firewall-Einstellungen gesperrt sein sollte kann beim Client nix ankommen. Im Zweifel beim Supersever unter Ubuntu den Port gesondert eintragen. Auch wenn der Client direkt auf der Maschine vom SQL-Server läuft ist das zwingend, weil der über localhost ebenfalls über die Einstellungen läuft.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

wastl
Beiträge: 28
Registriert: Mo 29. Okt 2007, 17:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Regensburg
Kontaktdaten:

Beitrag von wastl »

hm auf localhost läuft kein mysql und es läuft auch keine Firewall auf localhost
aber connected und abgefragt wird eh ein entfernter mysql-server als hat localhost eh nichts zu melden ;)
Ich glaub das hast du irgendwie falsch verstanden *g*

lg
wastl

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6855
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

wastl hat geschrieben:Ubuntu: Lazarus 0.9.23 Beta vom 29..10.07 i386-linux-gtk
Windows: Lazarus 0.9.23 Beta vom 29.10.2007 i386-win32-win32/win64 SVN-Revision 12622

beide am gleichen Tag vom gleichen Mirror gezogen und installiert...
Dann kann es nicht von der Version abhängen. Vor ca. 1-2 Monaten wurde gerade bei SQLdb sehr viel zum Guten geändert/gefixt.

Das ganze schon mal mit einem minimal Beispiel (Connection, Tranaction und Query) was rein unter Linux erstellt wurde getestet ? Nur damit man es auf die Portierung oder auf generell eingrenzen kann.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten