From a8587ad08fe851ea088500aa846fa982845332c1 Mon Sep 17 00:00:00 2001 From: wangziqi Date: Sat, 1 Aug 2026 14:14:21 +0800 Subject: [PATCH] fix(server): align logic-delete config with boolean deleted columns --- ...61__normalize_platform_deleted_boolean.sql | 27 +++++++++++++++++++ .../src/main/resources/application.yaml | 5 ++-- 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 yudao-module-education/src/main/resources/db/migration/education/V4461__normalize_platform_deleted_boolean.sql diff --git a/yudao-module-education/src/main/resources/db/migration/education/V4461__normalize_platform_deleted_boolean.sql b/yudao-module-education/src/main/resources/db/migration/education/V4461__normalize_platform_deleted_boolean.sql new file mode 100644 index 00000000..b789a1e0 --- /dev/null +++ b/yudao-module-education/src/main/resources/db/migration/education/V4461__normalize_platform_deleted_boolean.sql @@ -0,0 +1,27 @@ +-- 将平台表(system_*/infra_* 等)的 deleted 列从整数规范化为 BOOLEAN, +-- 与业务表(education_*/pay_*/product_* 等)及全局逻辑删除配置(true/false)保持一致。 +-- 背景:业务表迁移均按 BOOLEAN 创建 deleted,而框架全局配置此前为 0/1, +-- 导致 MyBatis-Plus 生成 "deleted = 0" 在 BOOLEAN 列上报 +-- "operator does not exist: boolean = integer"。 +-- 方案:将逻辑删除配置改为 true/false,并把平台表的整数 deleted 转换为 BOOLEAN。 +DO $$ +DECLARE + r record; +BEGIN + FOR r IN + SELECT table_name + FROM information_schema.columns + WHERE table_schema = 'public' + AND column_name = 'deleted' + AND data_type IN ('integer', 'smallint') + ORDER BY table_name + LOOP + EXECUTE format( + 'ALTER TABLE %I ALTER COLUMN deleted DROP DEFAULT; ' + || 'ALTER TABLE %I ALTER COLUMN deleted TYPE boolean USING (deleted <> 0); ' + || 'ALTER TABLE %I ALTER COLUMN deleted SET DEFAULT false; ' + || 'ALTER TABLE %I ALTER COLUMN deleted SET NOT NULL;', + r.table_name, r.table_name, r.table_name, r.table_name); + END LOOP; +END; +$$; diff --git a/yudao-server/src/main/resources/application.yaml b/yudao-server/src/main/resources/application.yaml index 389e84cf..82e140fc 100644 --- a/yudao-server/src/main/resources/application.yaml +++ b/yudao-server/src/main/resources/application.yaml @@ -62,8 +62,8 @@ mybatis-plus: # id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库 # id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库 # id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解 - logic-delete-value: 1 # 逻辑已删除值(默认为 1) - logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) + logic-delete-value: true # 逻辑已删除值:项目 PostgreSQL 表 deleted 均为 BOOLEAN + logic-not-delete-value: false # 逻辑未删除值:项目 PostgreSQL 表 deleted 均为 BOOLEAN banner: false # 关闭控制台的 Banner 打印 type-aliases-package: ${yudao.info.base-package}.module.*.dal.dataobject encryptor: @@ -271,6 +271,7 @@ yudao: yudao: education: enabled: true # 恭学教育模块开关:控制 /education/** 管理端接口的注册 + catalog-mode: JAVA_READ # 题库数据源模式:JAVA_READ 走本地 PostgreSQL,支持创作/发布;SCALAR_READ 仅读旧数据源 info: version: 1.0.0 base-package: cn.iocoder.yudao