修复数据库迁移乱码并统一 MySQL 8 配置

This commit is contained in:
wkc
2026-03-28 10:09:34 +08:00
parent bc7011313f
commit 040a03cd36
77 changed files with 1682 additions and 6026 deletions

View File

@@ -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`

View 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` 中已包含 `管理员``若依``系统管理``用户管理``利率定价管理`

View File

@@ -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`

View 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` 实际执行表结构导入和必要数据导入

View 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` 验证脚本可正常读取当前后端状态