From "Michael Pheasant <mike@pheasant.co.nz>"
authorNathan Bird <nathan@acceleration.net>
Mon, 24 Aug 2009 13:53:50 +0000 (09:53 -0400)
committerNathan Bird <nathan@acceleration.net>
Mon, 24 Aug 2009 13:55:38 +0000 (09:55 -0400)
Database-list ignores a supplied database name and instead uses
"mysql". It is possible that a mysql userid has permissions to issue
"show databases" but no permission to connect to db "mysql".
database-list gives an error in this scenario.

The following patch overcomes this by using the user-supplied db name
or else "mysql" if nil supplied.

db-mysql/mysql-sql.lisp

index 36fc90a9d25525cfaec3336f43985f0fd33ddda0..155b59732ffd1de487d0a7e6c4c7af9a0a814814 100644 (file)
 
 (defmethod database-list (connection-spec (type (eql :mysql)))
   (destructuring-bind (host name user password &optional port) connection-spec
-    (declare (ignore name))
-    (let ((database (database-connect (list host "mysql" user password port) type)))
+    (let ((database (database-connect (list host (or name "mysql") user password port) type)))
       (unwind-protect
            (progn
              (setf (slot-value database 'clsql-sys::state) :open)