[gelöst] Zeos und MySQL in Lazarus nutzen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

[gelöst] Zeos und MySQL in Lazarus nutzen

Beitrag von Michl »

Hallo liebe Mitbürger,

ich bin dabei ein Projekt umzugestalten. Dabei möchte ich neu eine Datenbank auf einem Server betreiben. Mehrere Rechner sollen gleichzeitig darauf zugreifen können.

Da ich recht wenig Erfahrung mit Datenbanken, aber mich recht gut belesen habe (glaub ich zumindest), möchte ich gern MySQL als Datenbank und Zeos als Komponente nutzen. Nun habe ich versucht, MySQL zu installieren (zu erst komplett, dann nur noch div. Komponenten), dabei ist immer irgendwas beim Setup schief gelaufen. Zu letzt habe ich die Registry per Hand gesäubert :evil:, in der Hoffnung nun sind keine alten MySQL-Rester mehr da. Bevor ich einen weiteren Versuch starte will ich gern folgendes wissen:

Welches ist die aktuellste Version von MySQL, mit der Zeos (ich habe V.7.0.4 installiert) "fehlerfrei" umgehen kann?!
Was muss ich beim Paket MySQL alles installieren, Server ist klar, Clients auf den "Zugriffsrechnern", Connector??? welchen benötigt Zeos bzw. bringt er selbst einen mit?!

Über sonstige Tips/Ratschläge würde ich mich auch freuen!

Danke

Michael
Zuletzt geändert von Michl am Mi 3. Jul 2013, 22:20, insgesamt 1-mal geändert.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Zeos und MySQL

Beitrag von MmVisual »

Die "Libmysql.dll"
TZConnection. Port User Password Protocol Database
TZQuery mit TZconnection verbinden
Fertig.
EleLa - Elektronik Lagerverwaltung - www.elela.de

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Zeos und MySQL

Beitrag von MacWomble »

Ich habe den MySQL-Fork MariaDB 5.5.31 mit ZEOS ohne Probleme am Laufen.
MySQL verwende ich nicht mehr, da MariaDB flotter werkelt.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Zeos und MySQL

Beitrag von Michl »

@MmVisual:
Also ich brauche nur den Server und auf den Clientrechnern die "Libmysql.dll"?! Connectoren von MySQL brauche ich nicht zu installieren???
Der Rest ist mir soweit klar, doch muss ich erst den Server installieren. Installation ist immer abgebrochen. Die Fehler hab ich dann im Forum von MySQL gesucht und versucht diese abzustellen, was mir bis dato noch nicht gelungen war.
Das Bsp. http://wiki.freepascal.org/Zeos_tutoria ... -Anwendung konnte ich bisher nicht aussführen, da es immer mit einer Access violation abgebrochen ist (da Server nicht ordentlich installiert)!
Ich habe den MySQL-Fork MariaDB 5.5.31 mit ZEOS ohne Probleme am Laufen.
MySQL verwende ich nicht mehr, da MariaDB flotter werkelt.
Oha, ich glaub, da ist mir was durch die Lappen gegangen. Hab mich so auf MySQL eingeschossen, dass diese Alternative mir entgangen ist. Ein erstes Überfliegen im Netz sieht mir auf jeden Fall sehr sehr interessant aus. Danke für den Tip! Werde ich mir auf jeden Fall genauer anschauen und versuchen zu testen!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Zeos und MySQL

Beitrag von MmVisual »

Ich habe auch MySQL (mit Zeos und Lazarus).
Es braucht bei den Clients nur die eine DLL, die am besten im gleichen Verzeichnis wie die EXE.

MySQL hat den Vorteil, dass die Datenbank überall geht, z.B. ist die bei Linux fast immer schon verfügbar, oder z.B. bei NAS Netzlaufwerken kann man auch MySQL mit aktivieren. Daher ist MySQL für Anwendungen mit anderen Usern die bessere Wahl.

Ich habe das XAMPP von apachefriends.org installiert und da klappt die Installation problemlos. Dabei ist auch gleich Apache und man hat somit das phpMyAdmin Web Interface mit drauf. Alternativ kann man MySQL auch mit HeidiSQL administrieren, geht auch ganz gut.
EleLa - Elektronik Lagerverwaltung - www.elela.de

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Zeos und MySQL

Beitrag von hde »

@Michl,

unter welchem System versuchst du denn mySQL zu installieren?

Ich habe mit der Installalation weder unter div. Win's noch Mac Probleme gehabt.

Und wie MmVisual sagte: mySQL nut auf dem Server installieren, Clients brauchen nur die jeweils passende DL.L.
Und egal ob 32 oder 64 bit oder Mac, alle können auf die gleiche Datenbank zugreifen

hde

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Zeos und MySQL

Beitrag von Michl »

@hde, danke, diesmal scheint die Serverinstallation wenigstens funktioniert zu haben. Versuche jetzt erstmal mit MySQL klar zu kommen.


OK, bin jetzt wieder am Rechner, der mir auch als Server dienen soll (Win7 Home Premium - hoffe das geht).

Habe jetzt nur den Server von MySQL installiert (mysql-installer-community-5.5.32.0.msi). Dies scheint auch diesmal geklappt zu haben, ansonsten waren immer Fehler bei "Configuring Product" (Logdatei ".err" zeigt diesmal keine Fehler) aufgetreten.

Nun habe ich die "libmysql.dll" in meinen Projektordner kopiert.
TZConnection auf meine Form geschoben -> ZConnection1.
Hostname "localhost" geschrieben.
Port auf 3306 gestellt (ist auch so, lt. my.ini).
User eingetragen ("Micha" bzw auch "root" probiert). "Micha" hatte ich zuvor bei der Installation vom Server eingetragen.
Passwort eintragen ****. Wenn ich den Command Line Client starte funktioniert das auch.
Protocol auf "mysql-5" gestellt.
Database auf "test" gestellt. Lt. Command Line Client "SHOW DATABASES;" sollte ja "test" als Datenbank vorhanden sein.
Stelle ich jetzt Connected auf true, kommt ein Fenster mit "Access violation".

Was mache ich falsch??? :(
Zuletzt geändert von Michl am Mi 3. Jul 2013, 22:22, insgesamt 1-mal geändert.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Zeos und MySQL

Beitrag von MmVisual »

64 Bit Lazarus funktioniert mit 32 Bit DLL nicht. Was hast Du für eine Lazarus Version und DLL Version (32/64 Bit)?
EleLa - Elektronik Lagerverwaltung - www.elela.de

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Zeos und MySQL

Beitrag von Michl »

64 Bit Lazarus funktioniert mit 32 Bit DLL nicht. Was hast Du für eine Lazarus Version und DLL Version (32/64 Bit)?
Habe ich schon mehrfach von euch gelesen.

Lt. Command line:

Code: Alles auswählen

mysql> show global variables like 'version_compile_machine';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| version_compile_machine | x86   |
+-------------------------+-------+
1 row in set (0.00 sec)
Sollte doch 32bit sein?!

Lazarus ist auch 32bit!

Was könnte es sonst noch sein, ist bestimmt ein trivialer Fehler! Evtl. fehlt ja auch was bei meiner Windows-Version (Win7 Home Premium), ein Protokoll oder so?

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Zeos und MySQL

Beitrag von MmVisual »

In der TZConnection kannst Du auch die DLL direkt mit "LibraryLocation" angeben, falls er die nicht finden sollte.

Dieser Show-Befehl, zeigt der auch wirklich die DLL Version, oder nur die Version vom Server?

Hiermit kann man das Laden der DLL auch manuell testen:
http://www.lazarusforum.de/viewtopic.php?p=61233#p61233
EleLa - Elektronik Lagerverwaltung - www.elela.de

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Zeos und MySQL

Beitrag von hde »

bei einer Access violation wird es meiner Meinung nach nicht an einer evtl.falschen DLL liegen.
An einer falsch deklarierten Datenbank sollte es auch nicht liegen
und User / Password scheint mir auch nicht ursächlich zu sein.

Sind mySQL Server und Lazarus auf dem gleichen PC installiert?
Was ist das für Windows 7 - 32 oder 64 bit.
Die libmysql.dll erkennt man bei 5.5 an der Größe.
Was ist mit Firewall?
Und sry, ich hab so oft mySQL installiert das mir die Instance Configuration geläufig ist,
aber etwas aufpassen muss man da schon , auch bei dem Einrichten von Clients.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Zeos und MySQL

Beitrag von Michl »

In der TZConnection kannst Du auch die DLL direkt mit "LibraryLocation" angeben, falls er die nicht finden sollte.
Keine Änderung
Dieser Show-Befehl, zeigt der auch wirklich die DLL Version, oder nur die Version vom Server?
Ich habe die .dll von meiner installierten MySQL-Version kopiert (C:\Program Files\MySQL\MySQL Server 5.5\lib\libmysql.dll). Sollte doch dann auch die 32bit Version sein, ansonsten wäre ja der Installer falsch?! Eine andere .dll habe ich auch nicht auf dem Rechner gefunden. Eine 32bit - Version habe ich mir noch aus dem Netz gezogen - keine Änderung!
Hiermit kann man das Laden der DLL auch manuell testen:
viewtopic.php?p=61233#p61233
Nach deiner Function:

Code: Alles auswählen

  if LoadLibTest('libmysql.dll') then showmessage('Ja, geladen :)')
                                 else showmessage('Nicht geladen :(')  
Nicht geladen!

Ich habe das bei onCreate bei Form1 eingefügt, ist das i.O.?!
Habe jetzt alle möglichen LibraryLocation probiert, wo sich die .dll befindet bzw. ich sie hinkopiert hatte - kein Erfolg.
Wie sollte die libmysql.dll denn überhaupt geladen werden? Passiert das nicht erst wenn ich die TZConnection auf true stelle?! Mache ich dies, kommt ja aber die Access violation!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Zeos und MySQL

Beitrag von Michl »

Sind mySQL Server und Lazarus auf dem gleichen PC installiert?
Ja
Was ist das für Windows 7 - 32 oder 64 bit.
64bit
Die libmysql.dll erkennt man bei 5.5 an der Größe.
4.212.224 Byte
Verdammt! Lt. Googlesuche ist das tatsächlich eine 64Bit-Version (4212224 05-16-2013 20:24 mysql-5.5.32-winx64/lib/libmysql.dll) gefunden bei http://fossies.org/windows/misc/mysql-5 ... ex_st.html
Was ist mit Firewall?
Hatte ich schon an div. Stellen gelesen, ist off!
Und sry, ich hab so oft mySQL installiert das mir die Instance Configuration geläufig ist,
aber etwas aufpassen muss man da schon , auch bei dem Einrichten von Clients.
Ja und vor allem danke, ist nett, dass ihr mich nicht im Regen stehen lasst!

Werde nochmal versuchen woanders eine 32bit Version zu bekommen :evil:

[EDIT]: Tatsache im Paket war eine 64Bit libmysql.dll!
Ich habe jetzt die richtige gefunden ftp://sunsite.informatik.rwth-aachen.de ... MySQL-5.5/ (als Zip) und es funktioniert! Die LoadLibTest funktioniert auch - auch bevor Connected auf true gestellt wird!

[EDIT2]: Juchhu, auch das oben genante Beispiel funktioniert! Nun sollte dem ganzen nichts mehr im Wege stehen!

Vielen lieben Dank an euch beide!!! :D :D :D

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: [gelöst] Zeos und MySQL in Lazarus nutzen

Beitrag von hde »

Michl hat geschrieben:Tatsache im Paket war eine 64Bit libmysql.dll
dann hast du mit größter Wahrscheinlichkeit auch einen 64bit mySQl-Server installiert,
aber ob du mit einer 32bit oder 64bit DLL zugreifst ist völlig schnuppe.

Die DLL muss nur zu Zeos/Lazarus passen, wenn das 32er sind muss die DLL auch für 32bit sein.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: [gelöst] Zeos und MySQL in Lazarus nutzen

Beitrag von Michl »

Ja, sieht irgendwie so aus, als ob ich das geschafft habe zu vermasseln! :wink: Sorry für die Mühe und Zeit, ich wünsch Dir noch einen schönen Abend!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Antworten