GBase 8s
适配迁移
问答

flowable启动异常报错:liquibase.exception.DatabaseException: Error executing SQL call current_schema: 发生语法错误。

发表于2024-09-24 23:47:22449次浏览5个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:

351

gbasedbtjdbc_3.5.1_3X1_3_28a3a6.jar

【操作系统】:

【CPU】:

【问题描述】*:flowable启动异常报错:liquibase.exception.DatabaseException: Error executing SQL call current_schema: 发生语法错误。

 

    at com.gbasedbt.jdbc.IfxCallableStatement.<init>(IfxCallableStatement.java:151) ~[gbasedbtjdbc_3.5.1_3X1_3.jar:3.5.1_3X1_3_28a3a6]
    at com.gbasedbt.jdbc.IfxSqliConnect.i(IfxSqliConnect.java:6460) ~[gbasedbtjdbc_3.5.1_3X1_3.jar:3.5.1_3X1_3_28a3a6]
    at com.gbasedbt.jdbc.IfxSqliConnect.prepareCall(IfxSqliConnect.java:2656) ~[gbasedbtjdbc_3.5.1_3X1_3.jar:3.5.1_3X1_3_28a3a6]
    at com.zaxxer.hikari.pool.ProxyConnection.prepareCall(ProxyConnection.java:316) ~[HikariCP-4.0.3.jar:na]
    at com.zaxxer.hikari.pool.HikariProxyConnection.prepareCall(HikariProxyConnection.java) ~[HikariCP-4.0.3.jar:na]
    at sun.reflect.GeneratedMethodAccessor102.invoke(Unknown Source) ~[na:na]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_311]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_311]
    at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:238) ~[spring-jdbc-5.3.15.jar:5.3.15]
    at com.sun.proxy.$Proxy185.prepareCall(Unknown Source) ~[na:na]
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:117) [liquibase-core-4.5.0.jar:na]
    ... 140 common frames omitted
Caused by: java.sql.SQLException: null
    at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409) ~[gbasedbtjdbc_3.5.1_3X1_3.jar:3.5.1_3X1_3_28a3a6]
    at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3862) ~[gbasedbtjdbc_3.5.1_3X1_3.jar:3.5.1_3X1_3_28a3a6]
    ... 155 common frames omitted

2024-09-24 18:02:22.588  INFO 3420 --- [           main] liquibase.database                       : Set default schema name to null
2024-09-24 18:02:22.859  INFO 3420 --- [           main] liquibase.lockservice                    : Waiting for changelog lock....
2024-09-24 18:02:32.912  INFO 3420 --- [           main] liquibase.database                       : Error getting default schema

liquibase.exception.DatabaseException: Error executing SQL call current_schema: 发生语法错误。
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:125) [liquibase-core-4.5.0.jar:na]
    at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:160) [liquibase-core-4.5.0.jar:na]
    at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:171) [liquibase-core-4.5.0.jar:na]
    at liquibase.executor.jvm.JdbcExecutor.queryForObject(JdbcExecutor.java:179) [liquibase-core-4.5.0.jar:na]
    at liquibase.executor.jvm.JdbcExecutor.queryForObject(JdbcExecutor.java:194) [liquibase-core-4.5.0.jar:na]
    at liquibase.executor.jvm.JdbcExecutor.queryForObject(JdbcExecutor.java:189) [liquibase-core-4.5.0.jar:na]
    at liquibase.database.AbstractJdbcDatabase.getConnectionSchemaName(AbstractJdbcDatabase.java:365) [liquibase-core-4.5.0.jar:na]
    at liquibase.database.AbstractJdbcDatabase.getDefaultSchemaName(AbstractJdbcDatabase.java:325) [liquibase-core-4.5.0.jar:na]
    at liquibase.database.AbstractJdbcDatabase.escapeObjectName(AbstractJdbcDatabase.java:920) [liquibase-core-4.5.0.jar:na]
    at liquibase.database.AbstractJdbcDatabase.escapeTableName(AbstractJdbcDatabase.java:906) [liquibase-core-4.5.0.jar:na]
    at liquibase.sqlgenerator.core.SelectFromDatabaseChangeLogLockGenerator.generateSql(SelectFromDatabaseChangeLogLockGenerator.java:45) [liquibase-core-4.5.0.jar:na]

评论

登录后才可以发表评论
GBase用户8788发表于 1年前
按以下方法进行的调整.当前版本 flowable 6.7.2

修改方案
1 增加gbase支持
org.flowable.common.engine.impl.AbstractEngineConfiguration.java
getDefaultDatabaseTypeMappings()方法
添加
databaseTypeMappings.setProperty("GBase 8s Server","gbase8s");
在org.flowable.common.db.properties包下
添加
gbase8s.properties
内容将此路径下 oracle.properties内容复制即可
2 新增sql文件
org.flowable.db.create
org.flowable.db.drop
org.flowable.common.db.create
org.flowable.common.db.drop
org.flowable.entitylink.service.db.create
org.flowable.entitylink.service.db.drop
org.flowable.eventsubscription.service.db.create
org.flowable.eventsubscription.service.db.drop
org.flowable.identitylink.service.db.create
org.flowable.identitylink.service.db.drop
org.flowable.idm.db.create
org.flowable.idm.db.drop
org.flowable.job.service.db.create
org.flowable.job.service.db.drop
org.flowable.task.service.db.create
org.flowable.task.service.db.drop
org.flowable.variable.service.db.create
org.flowable.variable.service.db.drop
在上述的包下新增sql文件 ,将oracle 的sql文件复制出来,将名字中的oracle 替换成gbase8s
修改sql语句
如下
将sql中的NVARCHAR2 替换成VARCHAR
NUMBER提换成decimal
将NUMBER(*,10) 中的* 替换成28
将TIMESTAMP(6) 替换成 TIMESTAMP(5)

修改ALTER添加外键的语句支持gbase8s
例如
alter table ACT_ID_PRIV_MAPPING add constraint ACT_FK_PRIV_MAPPING foreign key (PRIV_ID_) references ACT_ID_PRIV (ID_);
修改为
alter table ACT_ID_PRIV_MAPPING add constraint foreign key (PRIV_ID_) references ACT_ID_PRIV (ID_);
将语句中的constraint 后边的表名去掉即可

修改ALTER添加唯一约束的语法支持gbase8s
--修改前
alter table ACT_ID_PRIV add constraint ACT_UNIQ_PRIV_NAME unique (NAME_);
--修改后
alter table ACT_ID_PRIV add constraint unique (NAME_) constraint ACT_UNIQ_PRIV_NAME;

mark一下:
以下语法需要调整:
--修改前
create index ACT_IDX_PROCDEF_INFO_PROC on ACT_PROCDEF_INFO(PROC_DEF_ID_);
alter table ACT_PROCDEF_INFO add constraint ACT_UNIQ_INFO_PROCDEF unique (PROC_DEF_ID_);
--修改后
Create unique index ACT_IDX_PROCDEF_INFO_PROC on ACT_PROCDEF_INFO(PROC_DEF_ID_);
snanjib发表于 1年前
从堆栈来看报错的是liquibase-4.5.0,应该是没有适配过gbase8s,导致查询默认schema时报错,跟执行的sql无关。建议更换适配过gbase8s的liquibase。
最佳回答
用户头像
GBase用户28017发表于 7个月前
学习。
GBase用户51882发表于 2个月前
蹲个答案。
zixuwang发表于 2个月前
等待有缘人解答。