Frage

Ich möchte von SBCL aus über CLSQL eine Verbindung zu MySQL herstellen.Ich habe CLSQL mit Quicklisp (ql:quickload 'clsql) geladen.Beim Aufruf von (clsql:connect '(...) :database-type :mysql) hieß es jedoch:

Fremdbibliotheken „libmysqlclient“, „libmysql“ konnten nicht geladen werden.(durchsucht CLSQL-SYS:AUSLÄNDISCHE-BIBLIOTHEK-SUCHPFADE).

Ich verwende CentOS und möchte im Grunde Folgendes tun

  1. Installieren Sie MySQL-Client-Entwicklungsheader mit yum, damit UFFI sie finden kann (was mir nicht gelungen ist)
  2. Nach der Installation können Sie eine Verbindung zum lokalen MySQL-Server herstellen (ich glaube nach 1.erledigt ist, könnte es automatisch funktionieren).

Ich verwende derzeit:

  • CentOS 5.7 Final (32 Bit)
  • SBCL 1.0.55
  • Quicklisp-Beta
  • Leckere Repositories:Basis, Epel, Extras, Updates

Ich habe nicht nur gefragt, wie man MySQL-Entwicklungsheader auf CentOS installiert, denn das würde nur einen Teil meines Problems lösen, ich müsste trotzdem wissen, was auf meinem Rechner fehlt.Ich habe auch nicht versucht, libmysqlclient/libmysql aus dem Quellcode zu erstellen, da ich nicht weiß, ob clsql es dann finden könnte oder nicht.Ich denke nicht.

Es tut mir wirklich leid, wenn meine Frage irgendwie am Thema vorbeigeht, aber ausgiebiges Googeln hat zu keinem Ergebnis geführt.Wenn mir jemand sagte, dass er unter CentOS keine MySQL-Client-Entwicklungsheader installieren könne, würde ich ihn auslachen und ihm sagen, er solle die Yum-Suche verwenden, aber ich konnte sie weder bei Yum noch online finden.

Ich kenne die Lösung für Ubuntu (und Debian), weil es ein cl-sql-Paket gibt und ich dort auch leicht MySQL-Header finden kann, aber ich brauche es unter CentOS.

Dank im Voraus.

War es hilfreich?

Lösung

Irgendwie gelingt es, wenn man etwas lange genug probiert ;)

Folgendes habe ich getan, wenn jemand eine Antwort braucht und auf diese Frage stößt:

(ql:quickload 'clsql)

;tell clsql where to search for mysql libs
(push #P"/usr/lib/mysql" CLSQL-SYS:*FOREIGN-LIBRARY-SEARCH-PATHS*)

;add mysql libs to clsql library path [apparent from code :]
(clsql:push-library-path "/usr/lib/mysql/")

;directly tell uffi to load mysqlclient shared library
(uffi:load-foreign-library "/usr/lib/mysql/libmysqlclient.so")

Natürlich können Sie „/usr/lib/mysql“ bei Bedarf durch einen anderen Pfad für MySQL-Bibliotheken ersetzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top