Lazarus und Maria DB

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
braunbär
Beiträge: 408
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Lazarus und Maria DB

Beitrag von braunbär »

Ich wollte jetzt die Verbindung von meinem Programm zu MariaDB herstellen. Gibt es jemand, der das schon gemacht hat? Es funktioniert bei mir überhaupt nicht.

Ich habe für den Test ein Projekt vom Typ "Anwendung" erstellt, und auf das Formular eine TMySQL57Connection (hab auch TMySQL80Connection versucht) gelegt und alle benötigten Parameter im Objectinspector eingegeben.

Beim anschließenden Versuch, das Häkchen bei connected zu setzen, kommt die Fehlermeldung

Code: Alles auswählen

[Window Title]
Fehler

[Content]
Can not load default MySQL library ("libmysql.dll" or "libmysql.dll"). Check your installation.

[Ok]
Die einzige libMySQL, die ich habe, ist die aus dem HEIDISQL Verzeichnis - die versteht sich aber offenbar nicht mit meinem Lazarus Programm, ich hatte sie provisorisch in mein Programmverzeichnis kopiert. Eine eigene Komponente für die MariaDB gibt es ja, soweit ich das herauslesen konnte nicht, man sollte die MySQL Verbindung nehmen.

MariaDB ist auf meinem Computer installiert und läuft in Verbindung mit HeidiSQL ohne Probleme.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1145
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Lazarus und Maria DB

Beitrag von kralle »

Moin,

schalte mal die Versionprüfung ab.
MariaDB und MySQL sind nicht 100% kompatibel.

Ich hatte dazu glaube ich letztes oder vorletztes Jahr in dem Konferenzbeitrag etwas in meiner PDF.

Ich schaue nachher mal nach (alternative suche im Forum)

Gruß Kralle
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

braunbär
Beiträge: 408
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: Lazarus und Maria DB

Beitrag von braunbär »

Ich habe jetzt in einem Online-Tutorial https://www.streetinfo.lu/computing/laz ... iadb.html den Link zu einer DDL Version gefunden, bei der zumindest DIESE Fehlermeldung nicht mehr kommt. Aber auch bei abgeschaltetem Versioncheck bekomme ich die Meldung

Code: Alles auswählen

[Window Title]
Fehler

[Content]
mdbConnection : Server connect failed.

[Ok] 	      
allerdings leider ohne weitere Informationen. Vermutlich passen die MariaBD, die DLL und die Komponente nicht zusammen. Aber irgendwoher muss es doch möglich sein, Programme zu bekommen, die miteinander können :D

PS: Bei eingeschaltetem Versionscheck kommt genau die gleiche Fehlermeldung.

charlytango
Beiträge: 1020
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Lazarus und Maria DB

Beitrag von charlytango »

braunbär hat geschrieben: Fr 10. Jan 2025, 17:51 Aber irgendwoher muss es doch möglich sein, Programme zu bekommen, die miteinander können
Ja, gibt es -- irgendwo ;-)

MariaDB wird bei SQLDB geradezu stiefmütterlich behandelt..
Ich empfehle daher die Verwendung von ZEOS und der aktuellen DLL von MariaDB.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1145
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Lazarus und Maria DB

Beitrag von kralle »

Moin,
braunbär hat geschrieben: Fr 10. Jan 2025, 17:00 Ich habe für den Test ein Projekt vom Typ "Anwendung" erstellt, und auf das Formular eine TMySQL57Connection (hab auch TMySQL80Connection versucht) gelegt und alle benötigten Parameter im Objectinspector eingegeben.
Zitat aus meiner PDF :
Damit die Verbindung per „TMySQL80Connection“ funktioniert,
muss im Betriebssystem noch der entsprechende MySQL-Client installiert werden.
Im Fall meines Linux Mint benötige ich den „Mysql-client-8.0“.
Unter Linux gab es da noch das Problem, das eine Software eine andere Version des Clients installiert hatte und
der benötigte Client nicht installiert werden konnte.

Du schreibst:
MariaDB ist auf meinem Computer installiert und läuft in Verbindung mit HeidiSQL ohne Probleme.
Liegt hier vielleicht auch der Hund begraben. Sind die Versionen unterschiedlich und auch die installierten Clients?

Gruß Kralle
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Benutzeravatar
juelin
Beiträge: 173
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: Lazarus und Maria DB

Beitrag von juelin »

Hi,
du musst das mit den Z-Komponenten (erst installieren) machen.
ZConnect, zTransaction und ZQuery
siehe Anhang.
ausserdem benötigst Du die libmariadb.dll library.
Viel Spass
Jürgen
Dateianhänge
Programmierung.txt
(1.97 KiB) 12-mal heruntergeladen

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6533
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: Lazarus und Maria DB

Beitrag von af0815 »

BTW: Änderungen bei SQLdb sind meistens abhängig von den Releasezyklen vom fpc. Und die sind etwas länger. Leider ist da die fcl an den fpc gebunden.

ZEOS hat die Einschränkung nicht, ist aber wieder externe Software. Das macht dann unter Umständen wieder Kopfweh wenn man der trunk (aka main, unstable) fpc verwendet.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Lazarus und Maria DB

Beitrag von MmVisual »

Ich empfehle ebenfalls das Verwenden der ZEOS Komponente, ich nutze diese bereits seit Jahren mit MySQL, MariaDB, MsSQL, PostgreSQL und SQLite.
Vorteil: Die TZConnection kann man recht einfach auf das andere Protokoll umstellen. Man benötigt nur noch die entprechende DLL. Daher kann man z.B. mit SQLite entwickeln und es dann mit MariaDB nutzen.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
theo
Beiträge: 10707
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus und Maria DB

Beitrag von theo »

Hier auf Linux (OpenSUSE Leap 15.6) geht es eigentlich aus dem Stand mit den Laz-Komponenten (TMySQL80Connection), wenn man libmariadb-devel installiert hat.

braunbär
Beiträge: 408
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: Lazarus und Maria DB

Beitrag von braunbär »

Mit den Zeos Komponenten bin ich ein Stück weiter gekommen, aber es funktioniert nach wie vor nicht. Ich bekomme jetzt die Fehlermeldung:

[Window Title]
Fehler

[Content]
SQL Error: Access denied for user 'Myaccount'@'localhost' (using password: YES)
Code: 1045 Message:

[Ok]
Ich habe in der Datenbank zwei User-Accounts angelegt, Myaccount mit Host localhost und Myaccount mit Host %, beide mit Password 1111.
Für die Zconnection habe ich im OI diese Daten eingegeben, aber die Datenbank will mich einfach nicht :(

braunbär
Beiträge: 408
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: Lazarus und Maria DB

Beitrag von braunbär »

kralle hat geschrieben: Sa 11. Jan 2025, 08:05
Du schreibst:
MariaDB ist auf meinem Computer installiert und läuft in Verbindung mit HeidiSQL ohne Probleme.
Liegt hier vielleicht auch der Hund begraben. Sind die Versionen unterschiedlich und auch die installierten Clients?

Gruß Kralle
Was meinst du mit "Versionen unterschiedlich"? Heidisql funktioniert mit MariaDB, mit meinem FP/Lazarus Programm kann ich keine Verbindung herstellen.

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

Re: Lazarus und Maria DB

Beitrag von MmVisual »

Diese in Lazarus verfügbaren Komponenten TMySQLxxConnection haben leider den Nachteil, dass wenn irgend eine Version nicht ganz genau exakt identisch ist, dass diese Komponente dann den Dienst verweigert.
Bei Zeos ist das nicht so, Zeos ist die Version der DLL und des SQL Servers völlig egal, Zeos geht einfach ohne meckern.

TMySQLxxConnection wirst du ständig das Problem haben, dass wenn irgend einer eine zufällig andere Version installiert hat, dass es dann wieder nicht geht. Die Entwickler von dieser Komponnete wissen das schon lange, warum das nicht behoben wurde weis ich nicht. Jedenfall sollte man daher besser auf TMySQLxxConnection verzichten und sich die Mühe machen Zeos zu installieren.
Ich wollte mal umsteigen auf TMySQLxxConnection, jedoch als ich dieses Manko bemerkte hab ich das dann mal gleich wieder sein lassen.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
theo
Beiträge: 10707
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus und Maria DB

Beitrag von theo »

@MmVisual: Auch mit MySQL80Connection1.SkipLibraryVersionCheck:=true; ?

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

Re: Lazarus und Maria DB

Beitrag von MmVisual »

Ich habe das vor einigen Jahren mal probiert und bin da böße aufewacht, seither nicht mehr probiert.
Alleine schon die Existenz des Parameters "SkipLibraryVersionCheck" zeigt die Sinnlosigkeit.

Zeos V8 hingegen ist ein völlig neuen Weg gegenüber V7 gegenagen, es brauch nun nicht mehr die Version mit angegeben zu werden, die machen das nun ganz einfach automatisch (richtig). :D
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
juelin
Beiträge: 173
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: Lazarus und Maria DB

Beitrag von juelin »

Hier noch ein Hinweis.
libmariadb gibt es in verschiedenen Versionen (32Bit und 64Bit)
Auf jeden Fall die richtige für den Computer nehmen.
Bei falscher Version kann es zu Fehlern kommen.
Das LIB-File muss im Directory von dem Lazarusprojekt stehen (auch wichtig).
Und dann bitte die ZEOS Komponeten bemutzen.
Denkt dran ZORS Package muss installiert sein
Und in Projekt>Projektinspektor müssen zcomponent und zcomponentdesign unter benötigte Package eingetragen sein.
Dann mir den Komponenten ZConnect, ZQuery...... aus dem Fenster Komponenten benutzen (siehe Anhang).
Dann sollte alles klappen.
Gruß
Jürgen
Dateianhänge
Komponenten.jpg
Komponenten.jpg (39.06 KiB) 274 mal betrachtet

Antworten