Вопрос

Я хочу подключиться к MySQL из SBCL с помощью CLSQL.Я загрузил CLSQL с помощью Quicklisp (ql:quickload 'clsql).Однако при вызове (clsql:connect '(...) :database-type:mysql) он сказал:

Не удалось загрузить сторонние библиотеки "libmysqlclient", "libmysql".(искал CLSQL-SYS:ПУТИ ПОИСКА ПО ЗАРУБЕЖНЫМ БИБЛИОТЕКАМ).

Я использую CentOS, и в основном то, что я хочу сделать, это

  1. Установите заголовки разработки клиента MySQL с помощью yum, чтобы UFFI мог его найти (чего мне не удалось сделать)
  2. после установки сможете подключиться к локальному серверу MySQL (думаю, после 1.готово, оно может работать автоматически).

В настоящее время я использую:

  • CentOS 5.7 Финал (32-разрядная версия)
  • СБКЛ 1.0.55
  • Бета-версия Quicklisp
  • ням репозитории:база, epel, дополнения, обновления

Я не просто спросил, как установить заголовки разработки MySQL в CentOS, потому что это решило бы только часть моей проблемы, мне все равно нужно было бы знать, чего не хватает на моей машине.Я также не пытался собирать libmysqlclient/libmysql из исходного кода, потому что не знаю, сможет ли clsql потом его найти или нет.Думаю, нет.

Мне очень жаль, если мой вопрос как-то не по теме, но обширный поиск в Google не дал никаких результатов.Если бы кто-нибудь сказал мне, что они не могут установить заголовки разработки клиента MySQL в CentOS, я бы посмеялся над ними и посоветовал им использовать поиск yum, но я не смог найти его ни с помощью yum, ни в Интернете.

Я знаю решение для ubuntu (и debian), потому что есть пакет cl-sql и там я тоже легко могу найти заголовки mysql, но оно мне нужно в CentOS.

Заранее спасибо.

Это было полезно?

Решение

Каким-то образом, если что-то попробовать достаточно долго, это обязательно получится ;)

Вот что я сделал, если кому-то нужен ответ и он наткнулся на этот вопрос:

(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")

Конечно, при необходимости вы можете заменить «/usr/lib/mysql» другим путем для библиотек MySQL.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top