Sreekumar R
Sreekumar R

Reputation: 599

libsqlite3 issue: I am not able to use cl-sql

I am trying to use cl-sql for database access to sqlite3.

But I am getting the error

Couldn't load foreign libraries "libsqlite3", "sqlite3". (searched CLSQL-SYS:*FOREIGN-LIBRARY-SEARCH-PATHS*: (#P"/usr/lib/clsql/" #P"/usr/lib/"))  

The same is with sqlite.

I have installed sqlite3 using apt-get and there is a file libsqlite.so.0 in /usr/lib directory.

I also tried to build sqlite3 from source but I couldn't get the so file. What is that I am doing wrong?

Upvotes: 1

Views: 576

Answers (1)

Daniel Keogh
Daniel Keogh

Reputation: 56

Your problem is that cl-sql has a third party dependency. If you inspect the implementation of cl-sql (probably under "~/quicklisp/dists/quicklisp/software/clsql-202011220-git/db-sqlite3/sqlite3-loader.lisp") you will see that the function database-type-load-foreign is trying to load a library named either "libsqlite3" or "sqlite3".

Depending on your operating system this is either looking for a .dll or .so with exactly one of those names.

Given that the version of of libsqlite.so has a different name on your particular distribution of linux, you have a number of different options to make this library work.

  1. Install a version of sqlite3 with the correct binary
  2. Create a soft link to your binary that redirects via ln -s /usr/lib/libsqlite.so.0 /usr/lib/libsqlite3.so (assuming libsqlite.so.0 is the file that clsql is looking for)
  3. Add new paths to CLSQL-SYS:*FOREIGN-LIBRARY-SEARCH-PATHS* to point to the correct binary if it is installed elsewhere (via clsql:push-libary-path)

Upvotes: 4

Related Questions