修复数据库迁移乱码并统一 MySQL 8 配置
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
# 后端 MySQL 8.0 配置实施记录
|
||||
|
||||
## 本次改动
|
||||
|
||||
- 调整 `ruoyi-admin/src/main/resources/application-dev.yml` 的主库 JDBC 配置
|
||||
- 后端继续连接 `116.62.17.81:3307/loan-pricing`
|
||||
- 将连接编码从 `utf8` 调整为 `utf8mb4`
|
||||
- 增加 `connectionCollation=utf8mb4_general_ci`
|
||||
|
||||
## 修改原因
|
||||
|
||||
- 当前后端已切换到 MySQL 8.0 实例 `116.62.17.81:3307`
|
||||
- 当前数据库 `loan-pricing` 已统一为 `utf8mb4_general_ci`
|
||||
- JDBC 连接参数需要与数据库字符集和排序规则保持一致,避免连接层与库层配置不一致
|
||||
|
||||
## 验证方式
|
||||
|
||||
- 检查 `application-dev.yml` 中 JDBC URL 已指向 `116.62.17.81:3307/loan-pricing`
|
||||
- 检查 JDBC URL 已包含 `characterEncoding=utf8mb4`
|
||||
- 检查 JDBC URL 已包含 `connectionCollation=utf8mb4_general_ci`
|
||||
46
doc/implementation-report-2026-03-28-chinese-data-repair.md
Normal file
46
doc/implementation-report-2026-03-28-chinese-data-repair.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# 中文数据修复实施记录
|
||||
|
||||
## 问题现象
|
||||
|
||||
- 目标库 `116.62.17.81:3307/loan-pricing` 中系统菜单、角色、用户昵称等中文字段显示为 `?`
|
||||
|
||||
## 根因结论
|
||||
|
||||
- 源库 `116.62.17.81:3306/loan-pricing` 中中文数据实际是正确的 UTF-8 字节
|
||||
- 通过 `SET NAMES utf8mb4` 读取源库时,可以正确得到中文内容
|
||||
- 之前生成的 `sql/loan_pricing_required_data_20260328.sql` 由 `mysqldump` 产出,文件中的中文已经被导出成问号
|
||||
- 目标库乱码不是 collation 调整导致,而是导入了这份已损坏的数据 SQL
|
||||
|
||||
## 本次修复
|
||||
|
||||
- 放弃使用已损坏的 `mysqldump` 数据文件
|
||||
- 直接从源库 `3306` 以 `utf8mb4` 正确读取 17 张必要数据表
|
||||
- 将这 17 张表重新覆盖写入目标库 `3307`
|
||||
- 重新生成 `sql/loan_pricing_required_data_20260328.sql`,确保文件内中文内容为正常 UTF-8
|
||||
|
||||
## 修复范围
|
||||
|
||||
- `loan_pricing_workflow`
|
||||
- `model_corp_output_fields`
|
||||
- `model_retail_output_fields`
|
||||
- `sys_config`
|
||||
- `sys_dept`
|
||||
- `sys_dict_data`
|
||||
- `sys_dict_type`
|
||||
- `sys_job`
|
||||
- `sys_menu`
|
||||
- `sys_notice`
|
||||
- `sys_post`
|
||||
- `sys_role`
|
||||
- `sys_role_dept`
|
||||
- `sys_role_menu`
|
||||
- `sys_user`
|
||||
- `sys_user_post`
|
||||
- `sys_user_role`
|
||||
|
||||
## 验证结果
|
||||
|
||||
- 目标库 `sys_user.nick_name` 已恢复为 `若依`、`测试管理员`
|
||||
- 目标库 `sys_role.role_name` 已恢复为 `超级管理员`、`普通角色`、`管理员`
|
||||
- 目标库 `sys_menu.menu_name` 已恢复为 `系统管理`、`利率定价管理`、`流程列表`
|
||||
- 重新生成的 `sql/loan_pricing_required_data_20260328.sql` 中已包含 `管理员`、`若依`、`系统管理`、`用户管理`、`利率定价管理`
|
||||
@@ -0,0 +1,30 @@
|
||||
# loan-pricing collation 统一实施记录
|
||||
|
||||
## 本次改动
|
||||
|
||||
- 将目标数据库 `116.62.17.81:3307/loan-pricing` 的数据库默认排序规则调整为 `utf8mb4_general_ci`
|
||||
- 将目标数据库全部 33 张表的表级默认排序规则统一为 `utf8mb4_general_ci`
|
||||
- 修改以下建库和建表脚本,统一默认排序规则为 `utf8mb4_general_ci`
|
||||
- `sql/loan_pricing_schema_20260328.sql`
|
||||
- `sql/loan_pricing_workflow.sql`
|
||||
- `sql/model_corp.sql`
|
||||
- `sql/model_retail.sql`
|
||||
|
||||
## 执行方式
|
||||
|
||||
1. 执行 `ALTER DATABASE \`loan-pricing\` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci`
|
||||
2. 对全部现有表执行 `ALTER TABLE ... DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci`
|
||||
3. 将脚本中的 `DEFAULT CHARSET=utf8mb4` 统一补齐为 `DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci`
|
||||
4. 将脚本中遗留的 `utf8mb4_unicode_ci` 替换为 `utf8mb4_general_ci`
|
||||
|
||||
## 说明
|
||||
|
||||
- Quartz 相关表存在外键约束,直接执行 `CONVERT TO CHARACTER SET` 会触发外键列兼容性错误
|
||||
- 因此数据库侧采用“统一数据库默认排序规则 + 统一表级默认排序规则”的方式完成所有表的 collation 统一
|
||||
- 业务建表脚本已同步为 `utf8mb4_general_ci`,后续重建库时不会再回落到其他 collation
|
||||
|
||||
## 验证目标
|
||||
|
||||
- 数据库默认排序规则为 `utf8mb4_general_ci`
|
||||
- 所有表的 `TABLE_COLLATION` 为 `utf8mb4_general_ci`
|
||||
- 脚本中不再出现 `utf8mb4_unicode_ci`
|
||||
70
doc/implementation-report-2026-03-28-db-migration.md
Normal file
70
doc/implementation-report-2026-03-28-db-migration.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# loan-pricing 数据库迁移实施记录
|
||||
|
||||
## 本次改动
|
||||
|
||||
- 生成全量表结构 SQL: `sql/loan_pricing_schema_20260328.sql`
|
||||
- 生成必要数据批量插入 SQL: `sql/loan_pricing_required_data_20260328.sql`
|
||||
- 将开发环境数据库连接从 `116.62.17.81:3306` 调整为 `116.62.17.81:3307`
|
||||
|
||||
## 表结构 SQL 范围
|
||||
|
||||
- 覆盖 `loan-pricing` 库当前全部表结构
|
||||
- 包含业务表、系统表、Quartz 表、代码生成相关表
|
||||
|
||||
## 必要数据 SQL 范围
|
||||
|
||||
- 业务关键表:
|
||||
- `loan_pricing_workflow`
|
||||
- `model_corp_output_fields`
|
||||
- `model_retail_output_fields`
|
||||
- 系统初始化表:
|
||||
- `sys_config`
|
||||
- `sys_dept`
|
||||
- `sys_dict_type`
|
||||
- `sys_dict_data`
|
||||
- `sys_job`
|
||||
- `sys_menu`
|
||||
- `sys_notice`
|
||||
- `sys_post`
|
||||
- `sys_role`
|
||||
- `sys_role_dept`
|
||||
- `sys_role_menu`
|
||||
- `sys_user`
|
||||
- `sys_user_post`
|
||||
- `sys_user_role`
|
||||
|
||||
## 未纳入必要数据的表
|
||||
|
||||
- 日志类表:
|
||||
- `sys_job_log`
|
||||
- `sys_logininfor`
|
||||
- `sys_oper_log`
|
||||
- Quartz 运行态表:
|
||||
- `QRTZ_BLOB_TRIGGERS`
|
||||
- `QRTZ_CALENDARS`
|
||||
- `QRTZ_CRON_TRIGGERS`
|
||||
- `QRTZ_FIRED_TRIGGERS`
|
||||
- `QRTZ_JOB_DETAILS`
|
||||
- `QRTZ_LOCKS`
|
||||
- `QRTZ_PAUSED_TRIGGER_GRPS`
|
||||
- `QRTZ_SCHEDULER_STATE`
|
||||
- `QRTZ_SIMPLE_TRIGGERS`
|
||||
- `QRTZ_SIMPROP_TRIGGERS`
|
||||
- `QRTZ_TRIGGERS`
|
||||
- 空表:
|
||||
- `gen_table`
|
||||
- `gen_table_column`
|
||||
|
||||
## 迁移建议
|
||||
|
||||
1. 在目标实例 `116.62.17.81:3307` 创建数据库 `loan-pricing`
|
||||
2. 执行 `sql/loan_pricing_schema_20260328.sql`
|
||||
3. 执行 `sql/loan_pricing_required_data_20260328.sql`
|
||||
4. 启动项目并验证后台登录、字典加载、利率定价流程页面和任务配置
|
||||
|
||||
## 验证记录
|
||||
|
||||
- 使用 `mysqldump --no-data` 导出了全部表结构
|
||||
- 使用 `mysqldump --no-create-info --complete-insert --extended-insert` 导出了必要数据
|
||||
- 已更新 `ruoyi-admin/src/main/resources/application-dev.yml` 中的主库连接地址
|
||||
- 已在 `116.62.17.81:3307` 实际执行表结构导入和必要数据导入
|
||||
22
doc/implementation-report-2026-03-28-restart-java-backend.md
Normal file
22
doc/implementation-report-2026-03-28-restart-java-backend.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# restart_java_backend.sh 实施记录
|
||||
|
||||
## 本次改动
|
||||
|
||||
- 调整 `bin/restart_java_backend.sh` 中的后端监听端口,从旧的 `62318` 改为当前项目 `ruoyi-admin` 在 `dev` 环境下实际使用的 `8080`
|
||||
|
||||
## 修改原因
|
||||
|
||||
- 当前项目后端默认启动配置位于 `ruoyi-admin/src/main/resources/application-dev.yml`
|
||||
- 该配置的 `server.port` 为 `8080`
|
||||
- 原脚本继续使用旧端口会导致 `status`、`stop`、`restart` 无法准确识别当前正在运行的 Java 后端进程
|
||||
|
||||
## 影响说明
|
||||
|
||||
- `collect_pids` 现在会基于正确端口识别后端监听进程
|
||||
- `start` 前的运行态判断会更准确
|
||||
- `stop` 和 `restart` 会正确处理当前项目启动出的后端服务
|
||||
|
||||
## 验证方式
|
||||
|
||||
- 执行 `sh -n bin/restart_java_backend.sh` 校验脚本语法
|
||||
- 执行 `bin/restart_java_backend.sh status` 验证脚本可正常读取当前后端状态
|
||||
Reference in New Issue
Block a user