MariaDB on Lucee 6

OS: CentOS 7 Minimal
Web Server: Tomcat v9.0.85 with Java 11.
App: Lucee 6.0.0.585
DB: MariaDB 11.2.2

I recently deployed the .war for 6.0.0.585 and installed it into my app. I basically moved my old WEB-INF to WEB-INF.BAK and dropped the WEB-INF from the new Lucee War into my app. I updated the web.xml file and restarted tomcat.

It seems to be running fine except datasources aren’t working. My test page comes up, SSL cert works, etc. but it’s failing to connect to my database so it throws an error. It’s late and I’m throwing in the towel for the night, but I figured I’d post here first because I didn’t have much luck finding anything to match this error in the forums/google. I’m getting the following error.

java.lang.RuntimeException:lucee.commons.lang.ClassException: cannot load class through its string name, because no definition for the class with the specified name [org.gjt.mm.mysql.Driver] could be found caused by (java.lang.ClassNotFoundException:org.gjt.mm.mysql.Driver;java.lang.ClassNotFoundException:org.gjt.mm.mysql.Driver not found by lucee.core [45]:wink:

Does Lucee 6 not support mysql or mariadb out of the box? Do I need to install a driver or something?

Here’s an example of a datasource as I have it setup in myapp/Application.cfc

this.datasources[“dbusers”] = {
class: ‘org.gjt.mm.mysql.Driver’
, connectionString: ‘jdbc:mysql://192.168.200.211:3306/dbUsers?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=exception&tinyInt1isBit=true&autoReconnect=false&jdbcCompliantTruncation=true&useOldAliasMetadataBehavior=true&allowMultiQueries=true&useLegacyDatetimeCode=true’
, username: ‘lucee’
, password: “encrypted:f665f7be64cc1ab5709d6e4ad4be7ebb1c123886bfe1217e999886705f451dbd94ead7d373cca033”

    // optional settings
    , connectionLimit:100 // default:-1

};

Thoughts? The database works just fine on Lucee 5.2.5.20, which is what I’m trying to upgrade from. It’s been a while since I set these datasources up on Lucee 5, but I don’t recall having to add any database drivers or anything.

Yes, Lucee 5 & 6 out of the box supports MySQL / MariaDB

You appear to be setting up a remote connection to a datasource. My first suggestion is at the command line of that Lucee Box or container, try to manually connect to the remote datasource.

On the remote Mysql /MariaDB server, make sure you have an account that allows the connection. In many cases, mysql /mariadb is in lockdown mode and unless the user account has an implicit permission to remotely connect, the login will fail.

Thank you for the reply.

I already know the server can talk to the database because Lucee 5 was able to connect to the database just fine. I simply stopped tomcat, upgraded Lucee 5 to Lucee 6, and now the Lucee 6 install won’t connect to the same database using the same Application.cfm entries.

If I swap back in my old WEB-INF and use Lucee 5, it connects to the DB without issue again.

In the error, at the end it says ’ mysql.Driver not found by lucee.core’, which is what made me think it might be a driver issue.

I’ve since tried downloading the mySQL extension from download.lucee.org and installed it into myapp/WEB-INF/lucee-server/deploy but that didn’t work either.

Try Forgebox’s MariaDB-specific extension?

I was able to get it working.

After going through some threads it appears the driver name for mysql changed from ‘org.gjt.mm.mysql.Driver’ in Lucee 5 to ‘com.mysql.cj.jdbc.Driver’ on Lucee 6.

Changing the class parameter in my datasource description within application.cfc allowed my datasources to work again.

2 Likes