Liquibase操作Cassandra数据库时MD5SUM相关SQL语法错误求助
Liquibase操作Cassandra数据库时MD5SUM相关SQL语法错误求助
大家好,我正在Kotlin项目里尝试用Liquibase实现Cassandra数据库的自动化迁移,目前碰到了一个棘手的语法错误问题,想请教下有没有同行遇到过或者知道怎么解决?
我的环境配置
- 使用的依赖版本:
- liquibase-core: 4.30.0
- liquibase-cassandra-4.30.0.jar
- cassandra-jdbc-wrapper-4.13.1-bundle.jar
- Liquibase配置文件(
liquibase.properties)中的Cassandra相关内容:url=jdbc:cassandra://192.168.120.40:9042/keyspace_name?localdatacenter=datacenter1&compliancemode=Liquibase driver=com.ing.data.cassandra.jdbc.CassandraDriver classpath=./libs/liquibase-cassandra-4.30.0.jar;./libs/cassandra-jdbc-wrapper-4.13.1-bundle.jar - Cassandra版本:4.1.8
问题重现步骤
- 第一次执行
liquibase status命令(不管是通过Gradle插件还是直接用Liquibase CLI),结果是成功的,Cassandra里也正常创建了databasechangelog和databasechangeloglock两张表; - 但当我第二次执行
liquibase status,或者第一次执行liquibase update成功后,再执行任何Liquibase命令(比如status、update),就会抛出语法错误,核心报错信息如下:Caused by: liquibase.exception.DatabaseException: Error executing SQL SELECT MD5SUM FROM keyspace_name.databasechangelog WHERE MD5SUM IS NOT NULL AND MD5SUM NOT LIKE '9:%': com.datastax.oss.driver.api.core.servererrors.SyntaxError: line 1:85 no viable alternative at input 'NOT' (...MD5SUM IS NOT NULL AND [MD5SUM] NOT...) at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:104) at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:251) at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:259) at liquibase.executor.jvm.JdbcExecutor.queryForList(JdbcExecutor.java:324)
我已经尝试过的方法
我试过更换不同版本的Liquibase和Cassandra专用插件,但都没能解决这个问题。
期望的结果
希望在第一次成功执行Liquibase命令(status或update)后,后续的任何Liquibase命令都能正常运行,不会出现这类CQL语法相关的错误。
内容来源于stack exchange
相关产品推荐
相关产品推荐

