You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liferay 7.2升级至7.4数据库失败:bit与boolean类型匹配错误

Liferay 7.2 升级至7.4数据库失败:bit与boolean类型不匹配

问题场景

尝试将Liferay 7.2数据库升级到7.4,最初发现release_表的verified列类型为bit,按提示改为boolean后,升级仍失败,报错如下:

错误日志

2024-05-23 10:12:50.316 INFO  [main][PortalUpgradeProcess:335] 升级流程 com.liferay.portal.upgrade.PortalUpgradeProcess 失败,耗时243毫秒
2024-05-23 10:12:50.327 ERROR [main][DBUpgrader:70] null
com.liferay.portal.kernel.log.LogSanitizerException: com.liferay.portal.kernel.upgrade.UpgradeException: com.liferay.portal.kernel.upgrade.UpgradeException: org.postgresql.util.PSQLException: 错误:不存在操作符:bit = boolean
提示:没有匹配给定名称和参数类型的操作符。您可能需要添加显式类型转换。
位置:143 [已脱敏]
    at com.liferay.portal.upgrade.PortalUpgradeProcess.upgrade(PortalUpgradeProcess.java:329) ~[portal-impl.jar:?]
    at com.liferay.portal.kernel.upgrade.util.UpgradeProcessUtil._upgradeProcess(UpgradeProcessUtil.java:172) ~[portal-kernel.jar:?]
    at com.liferay.portal.kernel.upgrade.util.UpgradeProcessUtil.upgradeProcess(UpgradeProcessUtil.java:148) ~[portal-kernel.jar:?]
    at com.liferay.portal.events.StartupHelperUtil.upgradeProcess(StartupHelperUtil.java:160) ~[portal-impl.jar:?]
    at com.liferay.portal.tools.DBUpgrader.upgradePortal(DBUpgrader.java:296) ~[portal-impl.jar:?]
    at com.liferay.portal.tools.DBUpgrader.main(DBUpgrader.java:166) [portal-impl.jar:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    at com.liferay.portal.tools.db.upgrade.client.DBUpgraderLauncher.main(DBUpgraderLauncher.java:45) [com.liferay.portal.tools.db.upgrade.client.jar:?]
Caused by: com.liferay.portal.kernel.log.LogSanitizerException: com.liferay.portal.kernel.upgrade.UpgradeException: org.postgresql.util.PSQLException: 错误:不存在操作符:bit = boolean
提示:没有匹配给定名称和参数类型的操作符。您可能需要添加显式类型转换。
位置:143 [已脱敏]
    at com.liferay.portal.kernel.upgrade.UpgradeProcess.upgrade(UpgradeProcess.java:128) ~[portal-kernel.jar:?]
    at com.liferay.portal.kernel.upgrade.UpgradeProcess.upgrade(UpgradeProcess.java:146) ~[portal-kernel.jar:?]
    at com.liferay.portal.upgrade.PortalUpgradeProcess.doUpgrade(PortalUpgradeProcess.java:350) ~[portal-impl.jar:?]
    at com.liferay.portal.upgrade.PortalUpgradeProcess.upgrade(PortalUpgradeProcess.java:324) ~[portal-impl.jar:?]
    ... 10 more
Caused by: com.liferay.portal.kernel.log.LogSanitizerException: org.postgresql.util.PSQLException: 错误:不存在操作符:bit = boolean
提示:没有匹配给定名称和参数类型的操作符。您可能需要添加显式类型转换。
位置:143 [已脱敏]
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2676) ~[postgresql.jar:42.4.3]
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2366) ~[postgresql.jar:42.4.3]
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:356) ~[postgresql.jar:42.4.3]
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:496) ~[postgresql.jar:42.4.3]
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:413) ~[postgresql.jar:42.4.3]
    at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190) ~[postgresql.jar:42.4.3]
    at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:134) ~[postgresql.jar:42.4.3]
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) ~[hikaricp.jar:?]
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java) ~[hikaricp.jar:?]
    at com.liferay.portal.upgrade.v7_4_x.UpgradeRegion.doUpgrade(UpgradeRegion.java:42) ~[portal-impl.jar:?]
    at com.liferay.portal.kernel.upgrade.UpgradeProcess.lambda$upgrade$0(UpgradeProcess.java:122) ~[portal-kernel.jar:?]
    at com.liferay.portal.db.partition.util.DBPartitionUtil.forEachCompanyId(DBPartitionUtil.java:178) ~[portal-impl.jar:?]
    at com.liferay.portal.dao.db.BaseDB.process(BaseDB.java:465) ~[portal-impl.jar:?]
    at com.liferay.portal.kernel.dao.db.BaseDBProcess.process(BaseDBProcess.java:378) ~[portal-kernel.jar:?]
    at com.liferay.portal.kernel.upgrade.UpgradeProcess.upgrade(UpgradeProcess.java:107) ~[portal-kernel.jar:?]
    at com.liferay.portal.kernel.upgrade.UpgradeProcess.upgrade(UpgradeProcess.java:146) ~[portal-kernel.jar:?]
    at com.liferay.portal.upgrade.PortalUpgradeProcess.doUpgrade(PortalUpgradeProcess.java:350) ~[portal-impl.jar:?]
    at com.liferay.portal.upgrade.PortalUpgradeProcess.upgrade(PortalUpgradeProcess.java:324) ~[portal-impl.jar:?]
    ... 10 more
2024-05-23 10:12:50.345 ERROR [main][UpgradeRecorder:194] 无法检查升级结果,原因是null。请手动检查。
2024-05-23 10:12:50.364 INFO  [main][UpgradeRecorder:154] 主升级流程完成,结果为失败

Liferay升级流程失败,耗时35秒
因升级失败或未完成,正在连接Gogo shell
门户升级失败。修复问题后重试。

解决思路

从报错来看,问题出在UpgradeRegion升级步骤中,仍有bit类型字段与boolean类型进行比较的情况。除了release_表的verified列,还需要检查以下内容:

  • 检查Region_表中是否存在bit类型的布尔字段,将其转换为PostgreSQL的boolean类型
  • 若数据库中存在其他自定义bit类型字段,确认是否需要转换,或在升级前通过SQL添加显式类型转换的逻辑
  • 验证PostgreSQL驱动版本是否与Liferay 7.4兼容(当前使用的postgresql.jar为42.4.3,建议使用Liferay官方推荐的适配版本)

内容的提问来源于stack exchange,提问作者Akash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:13:09