I'm receiving an error when attempting to run Liquibase migrations using liquibase-cassandra:4.31.1.1 against a ScyllaDB cluster.
The code I'm using:
String contacts = Arrays.stream(myHosts.split(","))
.map(String::trim)
.collect(Collectors.joining("--"));
String jdbcUrl = String.format("jdbc:cassandra://%s:%d/%s?compliancemode=Liquibase&localdatacenter=%s&requesttimeout=10000",
contacts,
myPort,
myKeyspace,
myDataCenter);
String changeLogFile = "db/changelog/db.changelog-master.json";
Connection connection = DriverManager.getConnection(jdbcUrl, myUsername, myPassword);
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));
Liquibase liquibase = new Liquibase(changeLogFile, new ClassLoaderResourceAccessor(), database);
liquibase.update("main");
Error log:
PM liquibase.command
INFO: Logging exception.
ERROR: Exception Details
ERROR: Exception Primary Class: IllegalStateException
ERROR: Exception Primary Reason: Cannot find generators for database class liquibase.ext.cassandra.database.CassandraDatabase, statement: SELECT TABLE_NAME, KEYSPACE_NAME, COMMENT FROM system_schema.tables WHERE keyspace_name = 'mykeyspace' AND TABLE_NAME = 'databasechangelog'. Either Liquibase or the database platform does not support the type of statement being generated. Please check your database documentation for more information.
ERROR: Exception Primary Source: Cassandra 3.0.8
PM liquibase.command
INFO: Command execution complete
Error when executing Liquibase migrations:
liquibase.exception.CommandExecutionException: liquibase.exception.ChangeLogParseException: Error parsing db/changelog/db.changelog-master.json : Cannot find generators for database class liquibase.ext.cassandra.database.CassandraDatabase, statement: SELECT TABLE_NAME, KEYSPACE_NAME, COMMENT FROM system_schema.tables WHERE keyspace_name = 'mykeyspace' AND TABLE_NAME = 'databasechangelog'. Either Liquibase or the database platform does not support the type of statement being generated. Please check your database documentation for more information.
Note: I ran this code against a local ScyllaDB container and it worked as expected. The problem happens when I try to run in test/prod environment against a ScyllaDB cluster. The connection with the cluster is being established, the problem happens in liquibase.update("main").
Has anyone faced this issue?