Files
mp-java/.workbuddy/memory/2026-07-18.md
赵忠林 07bc994eba refactor(database): 更新实体及Mapper中表名为gxwebsoft_core前缀
- 修改所有实体类@TableName注解的表名,添加gxwebsoft_core数据库前缀
- 更新各XML Mapper中的SQL语句表名,统一加上gxwebsoft_core前缀
- 调整关联查询和多个子查询中的表名对应关系,确保与实体类一致
- 涉及实体类包括Company、CompanyComment、Dict、User等多个核心业务表
- 保持代码逻辑和功能不变,确保数据库访问路径更新规范化
2026-07-19 00:12:22 +08:00

39 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2026-07-18
## 生产日志报错分析cms-api
用户贴了一段 cms-api 容器日志,三类信息,结论如下:
1. **`Table 'modules.sys_user' doesn't exist`(真 bug影响功能**
- 根因:部署的 MySQL 库名是 `modules``application-prod.yml`/`application-cms.yml``jdbc:mysql://.../modules`),而 `common.system.entity.User` 实体 `@TableName("sys_user")`,且 cms 模块多处使用 `UserService``CmsNavigationController``CmsArticleController``LeadReferralServiceImpl` 等)。`modules` 库里缺 `sys_user` 系统表 → 任何依赖查 `sys_user` 的请求抛 `SQLSyntaxErrorException` → 500。
- 性质:数据库初始化/迁移遗漏,**不是代码逻辑 bug**(代码正确,库缺表)。仓库内无 `sys_user` 建表 SQL说明系统基础表由外部初始化脚本/主 server 工程提供。
- 修复方向:在 `modules` 库执行系统基础 schema`sys_user` 等系统表)。需找到对应 init SQL。
2. **`参数类型转换异常: 参数名=id, 传入值=resolveDomain/getByDomain/submitForm/.../NaN`(噪音,不影响)**
- 来源:`BaseController.handleMethodArgumentTypeMismatch``@ExceptionHandler(MethodArgumentTypeMismatchException)`),扫描器/爬虫用方法名字符串resolveDomain、submitForm 等)和 NaN 探测 `id`(Integer) 参数,被拦截并返回友好错误。属公网 API 被扫描,无功能影响。建议:改用 logger 替代 `System.err.println`,必要时加限流/WAF。
3. **`定时任务需要查询所有租户的超时订单 list = 0`(正常,不影响)**
- 来源:`OrderCancelServiceImpl.findExpiredUnpaidOrders``System.out.println`,表示当前无超时未支付订单。正常运维日志。
## 修复sys_ 系统表改指 gxwebsoft_core schema
用户确认架构意图系统表sys_ 前缀)本就在中央库 `gxwebsoft_core`(与 `modules` 同实例 `1Panel-mysql-Bqdt`pwl 模块 Mapper XML 早就在用 `gxwebsoft_core.sys_user`/`gxwebsoft_core.sys_dict_data`。原报错是实体 `@TableName("sys_xxx")` 默认落到数据源默认库 `modules` 导致表缺失。
已用脚本批量修改(精确、白名单防误伤):
- 33 个实体 `@TableName("sys_xxx")``"gxwebsoft_core.sys_xxx"`(全部在 `common/system/entity`)。
- 19 个 Mapper XML 里 `FROM/JOIN` 后的 `sys_` 表名加 `gxwebsoft_core.` 前缀31 处,全在 `common/system/mapper/xml`)。
- 其他模块pwl/shop/app对 sys_ 表的引用本来就是 `gxwebsoft_core.` 开头,未动。
- `MybatisPlusConfig` 无全局表前缀,无冲突。
校验:裸 `@TableName("sys_`=0、裸 `FROM/JOIN sys_`=0、重复前缀=0。`UserInfo`/`EmailRecord`/`Payment` 等 sys_ 实体也已覆盖。
注意点(已告知用户):
- 需重新编译/重启 cms-api 容器生效。
- 确认 `modules` 库的连接账号对 `gxwebsoft_core` 有读写权限,且 `gxwebsoft_core` 里确实建齐了这些 sys_ 表。
- 多租户插件会给查询加 `tenant_id`,表结构/字段不变则行为不变。
## 生成 gxwebsoft_core 缺失系统表检查 SQL
从实体 `@TableName` 精确提取共 **31 张** `sys_` 表,生成 `docs/check_gxwebsoft_core_sys_tables.sql`
含四种查法:① 只列缺失表(结果空=齐全)② 逐张 EXISTS/MISSING 状态 ③ 期望31/实际/缺失数量统计 ④ 确认 gxwebsoft_core 库存在+账号有权限。基于 `information_schema.tables` 比对,无副作用只读。