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.