Connection to Informix database is created, but conn.getURL() returns null?

Hello! I’ve been trying to run Liquibase against a local Informix database using the liquibase docker image, but I’m running into issues with the database connection after it has been established.

It looks to me as though liquibase is connecting successfully to the database,

versions:
jdbc driver: 15.0.0.0
liquibase: 4.30.0

My properties file is fairly simple…

logLevel: debug

driver: com.informix.jdbc.IfxDriver

url: jdbc:informix-sqli://db:9088/database:INFORMIXSERVER=dev;
username: username
password: 

changelogFile: /liquibase/changelog.xml

However my logs suggest that while the connection is successful (and I can see it in the database logs), it is then broken when liquibase errors with the following logs;

[2025-01-08 12:57:05] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.UnsupportedDatabase
[2025-01-08 12:57:05] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SnowflakeDatabase
[2025-01-08 12:57:05] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.ext.bigquery.database.BigQueryDatabase
[2025-01-08 12:57:05] FINE [liquibase.database] Properties:
[2025-01-08 12:57:05] FINE [liquibase.database] Key:'user' Value:'username'
[2025-01-08 12:57:05] FINE [liquibase.database] Connecting to the URL:'jdbc:informix-sqli://db:9088/database:INFORMIXSERVER=dev;' using driver:'com.informix.jdbc.IfxDriver'
[2025-01-08 12:57:05] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.database.jvm.JdbcConnection
[2025-01-08 12:57:05] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance com.datical.liquibase.ext.database.jvm.ProJdbcConnection
[2025-01-08 12:57:05] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.ext.bigquery.database.BigQueryConnection
[2025-01-08 12:57:06] FINE [liquibase.database] Connection has been created
[2025-01-08 12:57:06] INFO [liquibase.command] Logging exception.
ERROR: Exception Details
[2025-01-08 12:57:06] INFO [liquibase.ui] ERROR: Exception Details
ERROR: Exception Primary Class:  NullPointerException
[2025-01-08 12:57:06] INFO [liquibase.ui] ERROR: Exception Primary Class:  NullPointerException
ERROR: Exception Primary Reason:  Cannot invoke "String.startsWith(String)" because "url" is null
[2025-01-08 12:57:06] INFO [liquibase.ui] ERROR: Exception Primary Reason:  Cannot invoke "String.startsWith(String)" because "url" is null
ERROR: Exception Primary Source:  4.30.0
[2025-01-08 12:57:06] INFO [liquibase.ui] ERROR: Exception Primary Source:  4.30.0
[2025-01-08 12:57:06] INFO [liquibase.command] Command execution complete

With the below stack trace;

[2025-01-08 12:57:06] SEVERE [liquibase.integration] Cannot invoke "String.startsWith(String)" because "url" is null
liquibase.exception.CommandExecutionException: liquibase.exception.DatabaseException: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because "url" is null
        at liquibase.command.CommandScope.lambda$execute$6(CommandScope.java:278)
        at liquibase.Scope.child(Scope.java:203)
        at liquibase.Scope.child(Scope.java:179)
        at liquibase.command.CommandScope.execute(CommandScope.java:219)
        at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:51)
        at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:21)
        at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
        at picocli.CommandLine.access$1500(CommandLine.java:148)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
        at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
        at picocli.CommandLine.execute(CommandLine.java:2174)
        at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$2(LiquibaseCommandLine.java:391)
        at liquibase.Scope.child(Scope.java:203)
        at liquibase.Scope.child(Scope.java:179)
        at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$3(LiquibaseCommandLine.java:366)
        at liquibase.Scope.child(Scope.java:203)
        at liquibase.Scope.child(Scope.java:179)
        at liquibase.integration.commandline.LiquibaseCommandLine.execute(LiquibaseCommandLine.java:363)
        at liquibase.integration.commandline.LiquibaseCommandLine.main(LiquibaseCommandLine.java:98)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at liquibase.integration.commandline.LiquibaseLauncher.main(LiquibaseLauncher.java:116)
Caused by: liquibase.exception.DatabaseException: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because "url" is null
        at liquibase.command.core.helpers.AbstractDatabaseConnectionCommandStep.createDatabaseObject(AbstractDatabaseConnectionCommandStep.java:106)
        at liquibase.command.core.helpers.DbUrlConnectionCommandStep.obtainDatabase(DbUrlConnectionCommandStep.java:106)
        at liquibase.command.core.helpers.DbUrlConnectionCommandStep.run(DbUrlConnectionCommandStep.java:83)
        at liquibase.command.CommandScope.lambda$execute$6(CommandScope.java:231)
        ... 26 more
Caused by: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because "url" is null
        at liquibase.database.core.CockroachDatabase.isCorrectDatabaseImplementation(CockroachDatabase.java:65)
        at liquibase.database.DatabaseFactory.findCorrectDatabaseImplementation(DatabaseFactory.java:113)
        at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:153)
        at liquibase.command.core.helpers.AbstractDatabaseConnectionCommandStep.createDatabaseObject(AbstractDatabaseConnectionCommandStep.java:74)
        ... 29 more


Unexpected error running Liquibase: Cannot invoke "String.startsWith(String)" because "url" is null

It looks to me as though the url is being set to null on a valid connection, but I can’t for the life of me figure out why. Has anyone seen this kind of behaviour before?

Thank you very much in advance for reading or any responses or workarounds.

Leaving this up just in case it helps anyone. The latest jdbc driver was not compatible with Liquibase, however using an older version (4.50.4.1) worked fine for me.