ZEOS Access unter macOS

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Tomki
Beiträge: 3
Registriert: Sa 13. Mai 2023, 22:59

ZEOS Access unter macOS

Beitrag von Tomki »

Hallo zusammen
nach einer Weile Pause habe ich jetzt Lazarus wieder entdeckt und versuche ältere Delphi Projekte (noch aus Windows) auf Lazarus unter macOS zu portieren und dabei zu modernisieren.
Dabei möchte ich einen Clienten für eine MariaDB erstellen, die auf einem QNAP NAS läuft.
Die DB ist eingerichtet und ich kann mittels myPHPAdmin und mySQL Workbench auch darauf zugreifen ... soweit so gut.
Ich nutze einen Mac Pro (Intel macOS 12) und ein MacBook (M1, macOS 13). Außerdem kann ich noch auf ein paar andere Macs (mit Intel CPU) zugreifen um Dinge zu testen.
Nun passiert folgendes. Als Einstieg versuche ich einfach über eine ZConnection Komponente von ZEOS mit der MariaDB eine Verbindung herzustellen. Auf dem Mac Pro funktioniert das ohne meckern. Gleiches Projekt auf dem MacBook (gleiche Lazarus Umgebung, mySQL installiert) und ich bekomme immer denselben Fehler:
"libmysq|client.dylib found but could not be loaded. Check compile-target and library compatibility!. "
Ich bin dabei noch in der IDE - nichts kompiliert. Beim Mac Pro klappt's - bei allen anderen Macs kommt der Fehler. :oops:
Die Lib ist vorhanden. Ich habe sie auch in den Projektordner kopiert und auch mit der Eigenschaft "LibraryLocation" direkt auf die Lib verwiesen. Beim Ausprobieren habe ich verschiedene Versionen der mySQLClient.dylib probiert. Immer derselbe Fehler auf allen Macs bis auf den Mac Pro!? Ich finde keine Hilfe in den verschiedenen Wikis oder Foren. Hat hier jemand eine Idee?
Ich habe einen Screenshot angehängt.
Danke schonmal vorab!
Dateianhänge
Screenshot
Screenshot
Bildschirmfoto 2023-06-05 um 11.52.24.png (511.35 KiB) 634 mal betrachtet

Soner
Beiträge: 608
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: ZEOS Access unter macOS

Beitrag von Soner »

Schau mal den Fehler:
"libmysq|client.dylib found but could not be loaded. Check compile-target and library compatibility!. "

Das bedeutet die CPU-Architektur (x86, Arm, 32Bit oer 64Bit) von dem Bibliothek stimmt mit dem aktuellen Mac nicht. Soweit ich weis, die m1/m2 Prozessoren haben Arm-Architektur. Wahrscheinlich hast du einfach vorhandene .dylib-Datei auf neue Macs kopiert.

Tomki
Beiträge: 3
Registriert: Sa 13. Mai 2023, 22:59

Re: ZEOS Access unter macOS

Beitrag von Tomki »

Ja, die Fehlermeldung hätte ich auch so interpretiert.
Aber nope, sorry, das ist es nicht. Ich habe a) das ganze auf Intel und auf M1 Macs getestet und b) habe ich auf den anderen Test Macs jeweils mySQL installiert und auch getestet. mySQL funktioniert überall, die mySQL Libs funktionieren also überall. Außerdem tritt der Fehler in Lazarus ja schon zur Design-Zeit auf, also bevor irgendwas kompiliert wurde. Und die Lazarus IDE und die Packages sind überall von scratch installiert und dabei kompiliert.
Ich kann‘s mir einfach nicht erklären… oder ich hab irgendwo ein Brett vorm Kopf :roll:

Soner
Beiträge: 608
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: ZEOS Access unter macOS

Beitrag von Soner »

Tomki hat geschrieben:
Mo 5. Jun 2023, 21:46
.... mySQL funktioniert überall, die mySQL Libs funktionieren also überall. ...
Das bedeutet gar nichts.
Bei mir Läuft 64-Bit Firebird-Datenbank Server, aber ich muss wegen mein Programm 32 Bit Freepascal verwenden, deshalb habe ich in den Lazarus- und Programmordner 32 Bit Library kopiert. Ohne 32 Bit Library hätte ich den gleichen Fehler wie bei dir. Ich verwende auch ZEOS.
Schau einfach bei lazarus-Menü [Hilfe > Über Lazarus ] Cpu-Target, dein dylib muss gleichen Cpu-Target haben.

Viel Glück.

Tomki
Beiträge: 3
Registriert: Sa 13. Mai 2023, 22:59

Re: ZEOS Access unter macOS

Beitrag von Tomki »

Ok - wäre möglich. Aber: seit macOS 10.15 laufen gar keine 32 bit Apps mehr unter macOS (außer vlt. In virtuellen Maschinen, die ich aber hierfür nicht nutze).. D.h. weder eine der beteiligten Libs noch Lazarzus kann oder die Komponenten können als 32 bit version kompiliert werden, wenn sie auf einem macOS 12 (Monterey) funktionieren. Und das tun sie ja auf einem meiner Testrechner. Aber eben nur auf einem … bei 3 weiteren Rechnern mit macOS 12 oder 13 bei ansonsten gleicher Installation funktioniert es nicht. Und ich meine nicht, dass ich die auf dem funktionierendem System kompilierte App auf die anderen Rechner übertrage, sondem auf allen Rechnern den Test unter Lazarus im Editor mit jeweils einem neuen Projekt mache. Überall ist die 64 bit Version von mySQL installiert (ginge auch nicht anders). Aber auch die kompilierte App (die auf einem System läuft, also mit dem korrekten target (64 bit) kompiliert worden sein muss, weil sie sonst überhaupt nicht lauffähig wäre) erzeugt auf den anderen Systemen den Fehler wöhrend der Laufzeit. Verwirrend 🧐

Soner
Beiträge: 608
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: ZEOS Access unter macOS

Beitrag von Soner »

Mit 32 Bit/64 Bit Beispiel meinte ich nicht dein Problem, das war ein Beispiel für "Dynamische Libraries müssen gleiche Architektur haben".
Dein Problem ist du hast auf Macbook m1 (=ARM-Architektur) und auf MacPro (=x86 Architektur, 64Bit) hast. Du musst dafür sorgen, dass du jeweils passende mysql-library hast.

Such doch einfach bei Google nach "Mysql DEINE-VERSION dylib m1".

Ich wünsche dir viel Glück, du hast ganz schlechte Kombination erwischt, MySQL ist shit, Unix(Macos kernel) ist shit.

sstvmaster
Beiträge: 574
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: ZEOS Access unter macOS

Beitrag von sstvmaster »

Hallo Tomki,

gleich vorweg ich bin kein Mac Profi, noch habe ich einen.

Kann du mal bitte folgendes probieren (Terminal):
file $ which mysql
file $ which lazarus
Bei Lazarus bin ich mir nicht sicher ob das mit "which" funktioniert.

Kann es eventuell auch sein das Lazarus in Rosetta läuft?
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Antworten