pangu-user-platform/sql/import_menu.sh

79 lines
2.4 KiB
Bash
Raw Normal View History

feat: 创建完整菜单数据恢复方案 ## 问题描述 用户反馈:菜单栏缺少RuoYi默认的系统管理菜单(用户管理、角色管理、菜单管理等),只显示盘古业务菜单 ## 问题分析 初始化数据库时,只导入了盘古业务菜单(pangu_menu.sql),缺少RuoYi的系统管理、系统监控、系统工具菜单 ## 解决方案 ### 1. 创建完整菜单SQL文件 ``` sql/sys_menu_complete.sql (196行, 118条菜单) ├─ RuoYi系统菜单: 72条 (menu_id 1-1999) │ ├─ 系统管理 (用户、角色、菜单、部门、岗位、字典、参数、通知、日志) │ ├─ 系统监控 (在线用户、定时任务、数据监控、服务监控、缓存监控) │ └─ 系统工具 (表单构建、代码生成、系统接口) └─ 盘古业务菜单: 46条 (menu_id >= 2000) └─ 盘古管理 (学校、会员、学生、应用、基础数据) ``` ### 2. 创建自动导入脚本 ```bash sql/import_menu.sh ├─ 数据库连接配置 ├─ SQL文件路径检查 ├─ 用户确认提示 ├─ 菜单数据导入 └─ 导入结果统计 ``` **功能特性**: - 自动检查SQL文件存在性 - 导入前用户确认 - 导入后自动统计菜单数量 - 显示顶级菜单列表 - 错误处理和友好提示 ### 3. 创建运维文档 ``` docs/07-运维文档/菜单数据恢复指南.md ├─ 问题说明 ├─ 解决方案(3种导入方法) ├─ 验证步骤(数据库+前端) ├─ 注意事项(备份、权限、顺序) ├─ 常见问题Q&A └─ 相关文件索引 ``` ## 使用方法 ### 方法一:自动导入脚本(推荐) ```bash cd sql ./import_menu.sh ``` ### 方法二:手动导入SQL ```bash mysql -h127.0.0.1 -P3306 -uroot -p123456 pangu_user_platform < sql/sys_menu_complete.sql ``` ### 方法三:数据库客户端 使用Navicat/DataGrip执行sql/sys_menu_complete.sql ## 验证结果 ### 数据库验证 ```sql SELECT COUNT(*) FROM sys_menu; -- 预期:118条 SELECT CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END AS type, COUNT(*) AS count FROM sys_menu GROUP BY CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END; -- 预期:RuoYi 72条, 盘古 46条 ``` ### 前端验证 刷新页面后,菜单栏应显示: - ✅ 盘古管理 (order_num 0 - 最前面) - ✅ 系统管理 (order_num 1) - ✅ 系统监控 (order_num 2) - ✅ 系统工具 (order_num 3) - ✅ 若依官网 (order_num 4) ## 文件清单 - sql/sys_menu_complete.sql - 完整菜单SQL - sql/import_menu.sh - 自动导入脚本 - docs/07-运维文档/菜单数据恢复指南.md - 运维文档 --- 作者:湖北新华业务中台研发团队
2026-02-01 13:18:36 +08:00
#!/bin/bash
# ============================================================
# 脚本名称import_menu.sh
# 功能说明导入完整系统菜单RuoYi系统菜单 + 盘古业务菜单)
# 作 者:湖北新华业务中台研发团队
# 创建时间2026-01-31
# 使用方法:./import_menu.sh
# ============================================================
set -e
# 数据库配置
DB_HOST="8.148.25.55"
feat: 创建完整菜单数据恢复方案 ## 问题描述 用户反馈:菜单栏缺少RuoYi默认的系统管理菜单(用户管理、角色管理、菜单管理等),只显示盘古业务菜单 ## 问题分析 初始化数据库时,只导入了盘古业务菜单(pangu_menu.sql),缺少RuoYi的系统管理、系统监控、系统工具菜单 ## 解决方案 ### 1. 创建完整菜单SQL文件 ``` sql/sys_menu_complete.sql (196行, 118条菜单) ├─ RuoYi系统菜单: 72条 (menu_id 1-1999) │ ├─ 系统管理 (用户、角色、菜单、部门、岗位、字典、参数、通知、日志) │ ├─ 系统监控 (在线用户、定时任务、数据监控、服务监控、缓存监控) │ └─ 系统工具 (表单构建、代码生成、系统接口) └─ 盘古业务菜单: 46条 (menu_id >= 2000) └─ 盘古管理 (学校、会员、学生、应用、基础数据) ``` ### 2. 创建自动导入脚本 ```bash sql/import_menu.sh ├─ 数据库连接配置 ├─ SQL文件路径检查 ├─ 用户确认提示 ├─ 菜单数据导入 └─ 导入结果统计 ``` **功能特性**: - 自动检查SQL文件存在性 - 导入前用户确认 - 导入后自动统计菜单数量 - 显示顶级菜单列表 - 错误处理和友好提示 ### 3. 创建运维文档 ``` docs/07-运维文档/菜单数据恢复指南.md ├─ 问题说明 ├─ 解决方案(3种导入方法) ├─ 验证步骤(数据库+前端) ├─ 注意事项(备份、权限、顺序) ├─ 常见问题Q&A └─ 相关文件索引 ``` ## 使用方法 ### 方法一:自动导入脚本(推荐) ```bash cd sql ./import_menu.sh ``` ### 方法二:手动导入SQL ```bash mysql -h127.0.0.1 -P3306 -uroot -p123456 pangu_user_platform < sql/sys_menu_complete.sql ``` ### 方法三:数据库客户端 使用Navicat/DataGrip执行sql/sys_menu_complete.sql ## 验证结果 ### 数据库验证 ```sql SELECT COUNT(*) FROM sys_menu; -- 预期:118条 SELECT CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END AS type, COUNT(*) AS count FROM sys_menu GROUP BY CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END; -- 预期:RuoYi 72条, 盘古 46条 ``` ### 前端验证 刷新页面后,菜单栏应显示: - ✅ 盘古管理 (order_num 0 - 最前面) - ✅ 系统管理 (order_num 1) - ✅ 系统监控 (order_num 2) - ✅ 系统工具 (order_num 3) - ✅ 若依官网 (order_num 4) ## 文件清单 - sql/sys_menu_complete.sql - 完整菜单SQL - sql/import_menu.sh - 自动导入脚本 - docs/07-运维文档/菜单数据恢复指南.md - 运维文档 --- 作者:湖北新华业务中台研发团队
2026-02-01 13:18:36 +08:00
DB_PORT="3306"
DB_USER="root"
DB_PASS="aly2024A"
DB_NAME="pguser-db"
feat: 创建完整菜单数据恢复方案 ## 问题描述 用户反馈:菜单栏缺少RuoYi默认的系统管理菜单(用户管理、角色管理、菜单管理等),只显示盘古业务菜单 ## 问题分析 初始化数据库时,只导入了盘古业务菜单(pangu_menu.sql),缺少RuoYi的系统管理、系统监控、系统工具菜单 ## 解决方案 ### 1. 创建完整菜单SQL文件 ``` sql/sys_menu_complete.sql (196行, 118条菜单) ├─ RuoYi系统菜单: 72条 (menu_id 1-1999) │ ├─ 系统管理 (用户、角色、菜单、部门、岗位、字典、参数、通知、日志) │ ├─ 系统监控 (在线用户、定时任务、数据监控、服务监控、缓存监控) │ └─ 系统工具 (表单构建、代码生成、系统接口) └─ 盘古业务菜单: 46条 (menu_id >= 2000) └─ 盘古管理 (学校、会员、学生、应用、基础数据) ``` ### 2. 创建自动导入脚本 ```bash sql/import_menu.sh ├─ 数据库连接配置 ├─ SQL文件路径检查 ├─ 用户确认提示 ├─ 菜单数据导入 └─ 导入结果统计 ``` **功能特性**: - 自动检查SQL文件存在性 - 导入前用户确认 - 导入后自动统计菜单数量 - 显示顶级菜单列表 - 错误处理和友好提示 ### 3. 创建运维文档 ``` docs/07-运维文档/菜单数据恢复指南.md ├─ 问题说明 ├─ 解决方案(3种导入方法) ├─ 验证步骤(数据库+前端) ├─ 注意事项(备份、权限、顺序) ├─ 常见问题Q&A └─ 相关文件索引 ``` ## 使用方法 ### 方法一:自动导入脚本(推荐) ```bash cd sql ./import_menu.sh ``` ### 方法二:手动导入SQL ```bash mysql -h127.0.0.1 -P3306 -uroot -p123456 pangu_user_platform < sql/sys_menu_complete.sql ``` ### 方法三:数据库客户端 使用Navicat/DataGrip执行sql/sys_menu_complete.sql ## 验证结果 ### 数据库验证 ```sql SELECT COUNT(*) FROM sys_menu; -- 预期:118条 SELECT CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END AS type, COUNT(*) AS count FROM sys_menu GROUP BY CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END; -- 预期:RuoYi 72条, 盘古 46条 ``` ### 前端验证 刷新页面后,菜单栏应显示: - ✅ 盘古管理 (order_num 0 - 最前面) - ✅ 系统管理 (order_num 1) - ✅ 系统监控 (order_num 2) - ✅ 系统工具 (order_num 3) - ✅ 若依官网 (order_num 4) ## 文件清单 - sql/sys_menu_complete.sql - 完整菜单SQL - sql/import_menu.sh - 自动导入脚本 - docs/07-运维文档/菜单数据恢复指南.md - 运维文档 --- 作者:湖北新华业务中台研发团队
2026-02-01 13:18:36 +08:00
# SQL文件路径
SQL_FILE="$(cd "$(dirname "$0")" && pwd)/sys_menu_complete.sql"
echo "============================================================"
echo "导入系统菜单数据"
echo "============================================================"
echo "数据库: $DB_NAME"
echo "SQL文件: $SQL_FILE"
echo ""
# 检查SQL文件是否存在
if [ ! -f "$SQL_FILE" ]; then
echo "❌ 错误: SQL文件不存在: $SQL_FILE"
exit 1
fi
# 确认导入
read -p "此操作将清空并重新导入菜单数据,是否继续?(y/n): " confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
echo "❌ 操作已取消"
exit 0
fi
# 执行导入
echo ""
echo "正在导入菜单数据..."
fix: 修复MySQL字符集问题,防止中文乱码 ## 问题描述 用户反馈:菜单comment字段可能出现乱码 ## 问题分析 ### 乱码原因 1. **MySQL连接字符集不匹配**: - 客户端未指定字符集 - 默认字符集与数据不匹配 2. **终端显示问题**: - 终端编码与数据库编码不一致 - 查询结果传输过程中字符集转换错误 ### 数据库状态检查 ```sql -- 当前配置 character_set_client = utf8mb4 ✅ character_set_connection = utf8mb4 ✅ character_set_database = utf8mb4 ✅ character_set_results = utf8mb4 ✅ -- 表字符集 sys_menu: utf8mb4_general_ci ✅ ``` ## 解决方案 ### 1. 更新import_menu.sh导入脚本 **修改**:所有mysql命令添加`--default-character-set=utf8mb4` ```bash # 修复前 ❌ mysql -h"$DB_HOST" -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" < "$SQL_FILE" # 修复后 ✅ mysql -h"$DB_HOST" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" < "$SQL_FILE" ``` ### 2. 创建字符集修复工具 **新增**:`sql/fix_charset.sh` **功能特性**: - ✅ 检查数据库字符集配置 - ✅ 检查表字符集设置 - ✅ 测试查询菜单数据 - ✅ 一键修复表字符集 - ✅ 自动备份原表数据 **使用方法**: ```bash cd sql ./fix_charset.sh ``` **修复流程**: 1. 检查当前字符集配置 2. 显示菜单数据(检测乱码) 3. 用户确认是否修复 4. 创建备份表 5. 转换表字符集为utf8mb4 6. 验证修复结果 ## 预防措施 ### 数据导入时 ```bash # 始终指定字符集 mysql --default-character-set=utf8mb4 -h... < file.sql ``` ### 数据查询时 ```bash # 查询时指定字符集 mysql --default-character-set=utf8mb4 -h... -e "SELECT ..." ``` ### 应用程序配置 ```yaml # application.yml中确保 spring: datasource: url: jdbc:mysql://...?characterEncoding=utf8mb4&useUnicode=true ``` ## 验证结果 ```sql SELECT menu_id, menu_name, remark FROM sys_menu WHERE parent_id = 0; 2000 盘古管理 盘古用户平台业务菜单 ✅ 1 系统管理 系统管理目录 ✅ 2 系统监控 系统监控目录 ✅ ``` ## 相关文件 - sql/import_menu.sh - 菜单导入脚本(已修复) - sql/fix_charset.sh - 字符集修复工具(新增) --- 作者:湖北新华业务中台研发团队
2026-02-01 13:21:43 +08:00
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" < "$SQL_FILE"
feat: 创建完整菜单数据恢复方案 ## 问题描述 用户反馈:菜单栏缺少RuoYi默认的系统管理菜单(用户管理、角色管理、菜单管理等),只显示盘古业务菜单 ## 问题分析 初始化数据库时,只导入了盘古业务菜单(pangu_menu.sql),缺少RuoYi的系统管理、系统监控、系统工具菜单 ## 解决方案 ### 1. 创建完整菜单SQL文件 ``` sql/sys_menu_complete.sql (196行, 118条菜单) ├─ RuoYi系统菜单: 72条 (menu_id 1-1999) │ ├─ 系统管理 (用户、角色、菜单、部门、岗位、字典、参数、通知、日志) │ ├─ 系统监控 (在线用户、定时任务、数据监控、服务监控、缓存监控) │ └─ 系统工具 (表单构建、代码生成、系统接口) └─ 盘古业务菜单: 46条 (menu_id >= 2000) └─ 盘古管理 (学校、会员、学生、应用、基础数据) ``` ### 2. 创建自动导入脚本 ```bash sql/import_menu.sh ├─ 数据库连接配置 ├─ SQL文件路径检查 ├─ 用户确认提示 ├─ 菜单数据导入 └─ 导入结果统计 ``` **功能特性**: - 自动检查SQL文件存在性 - 导入前用户确认 - 导入后自动统计菜单数量 - 显示顶级菜单列表 - 错误处理和友好提示 ### 3. 创建运维文档 ``` docs/07-运维文档/菜单数据恢复指南.md ├─ 问题说明 ├─ 解决方案(3种导入方法) ├─ 验证步骤(数据库+前端) ├─ 注意事项(备份、权限、顺序) ├─ 常见问题Q&A └─ 相关文件索引 ``` ## 使用方法 ### 方法一:自动导入脚本(推荐) ```bash cd sql ./import_menu.sh ``` ### 方法二:手动导入SQL ```bash mysql -h127.0.0.1 -P3306 -uroot -p123456 pangu_user_platform < sql/sys_menu_complete.sql ``` ### 方法三:数据库客户端 使用Navicat/DataGrip执行sql/sys_menu_complete.sql ## 验证结果 ### 数据库验证 ```sql SELECT COUNT(*) FROM sys_menu; -- 预期:118条 SELECT CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END AS type, COUNT(*) AS count FROM sys_menu GROUP BY CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END; -- 预期:RuoYi 72条, 盘古 46条 ``` ### 前端验证 刷新页面后,菜单栏应显示: - ✅ 盘古管理 (order_num 0 - 最前面) - ✅ 系统管理 (order_num 1) - ✅ 系统监控 (order_num 2) - ✅ 系统工具 (order_num 3) - ✅ 若依官网 (order_num 4) ## 文件清单 - sql/sys_menu_complete.sql - 完整菜单SQL - sql/import_menu.sh - 自动导入脚本 - docs/07-运维文档/菜单数据恢复指南.md - 运维文档 --- 作者:湖北新华业务中台研发团队
2026-02-01 13:18:36 +08:00
if [ $? -eq 0 ]; then
echo ""
echo "✅ 菜单数据导入成功!"
echo ""
echo "菜单统计:"
fix: 修复MySQL字符集问题,防止中文乱码 ## 问题描述 用户反馈:菜单comment字段可能出现乱码 ## 问题分析 ### 乱码原因 1. **MySQL连接字符集不匹配**: - 客户端未指定字符集 - 默认字符集与数据不匹配 2. **终端显示问题**: - 终端编码与数据库编码不一致 - 查询结果传输过程中字符集转换错误 ### 数据库状态检查 ```sql -- 当前配置 character_set_client = utf8mb4 ✅ character_set_connection = utf8mb4 ✅ character_set_database = utf8mb4 ✅ character_set_results = utf8mb4 ✅ -- 表字符集 sys_menu: utf8mb4_general_ci ✅ ``` ## 解决方案 ### 1. 更新import_menu.sh导入脚本 **修改**:所有mysql命令添加`--default-character-set=utf8mb4` ```bash # 修复前 ❌ mysql -h"$DB_HOST" -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" < "$SQL_FILE" # 修复后 ✅ mysql -h"$DB_HOST" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" < "$SQL_FILE" ``` ### 2. 创建字符集修复工具 **新增**:`sql/fix_charset.sh` **功能特性**: - ✅ 检查数据库字符集配置 - ✅ 检查表字符集设置 - ✅ 测试查询菜单数据 - ✅ 一键修复表字符集 - ✅ 自动备份原表数据 **使用方法**: ```bash cd sql ./fix_charset.sh ``` **修复流程**: 1. 检查当前字符集配置 2. 显示菜单数据(检测乱码) 3. 用户确认是否修复 4. 创建备份表 5. 转换表字符集为utf8mb4 6. 验证修复结果 ## 预防措施 ### 数据导入时 ```bash # 始终指定字符集 mysql --default-character-set=utf8mb4 -h... < file.sql ``` ### 数据查询时 ```bash # 查询时指定字符集 mysql --default-character-set=utf8mb4 -h... -e "SELECT ..." ``` ### 应用程序配置 ```yaml # application.yml中确保 spring: datasource: url: jdbc:mysql://...?characterEncoding=utf8mb4&useUnicode=true ``` ## 验证结果 ```sql SELECT menu_id, menu_name, remark FROM sys_menu WHERE parent_id = 0; 2000 盘古管理 盘古用户平台业务菜单 ✅ 1 系统管理 系统管理目录 ✅ 2 系统监控 系统监控目录 ✅ ``` ## 相关文件 - sql/import_menu.sh - 菜单导入脚本(已修复) - sql/fix_charset.sh - 字符集修复工具(新增) --- 作者:湖北新华业务中台研发团队
2026-02-01 13:21:43 +08:00
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" -e "
feat: 创建完整菜单数据恢复方案 ## 问题描述 用户反馈:菜单栏缺少RuoYi默认的系统管理菜单(用户管理、角色管理、菜单管理等),只显示盘古业务菜单 ## 问题分析 初始化数据库时,只导入了盘古业务菜单(pangu_menu.sql),缺少RuoYi的系统管理、系统监控、系统工具菜单 ## 解决方案 ### 1. 创建完整菜单SQL文件 ``` sql/sys_menu_complete.sql (196行, 118条菜单) ├─ RuoYi系统菜单: 72条 (menu_id 1-1999) │ ├─ 系统管理 (用户、角色、菜单、部门、岗位、字典、参数、通知、日志) │ ├─ 系统监控 (在线用户、定时任务、数据监控、服务监控、缓存监控) │ └─ 系统工具 (表单构建、代码生成、系统接口) └─ 盘古业务菜单: 46条 (menu_id >= 2000) └─ 盘古管理 (学校、会员、学生、应用、基础数据) ``` ### 2. 创建自动导入脚本 ```bash sql/import_menu.sh ├─ 数据库连接配置 ├─ SQL文件路径检查 ├─ 用户确认提示 ├─ 菜单数据导入 └─ 导入结果统计 ``` **功能特性**: - 自动检查SQL文件存在性 - 导入前用户确认 - 导入后自动统计菜单数量 - 显示顶级菜单列表 - 错误处理和友好提示 ### 3. 创建运维文档 ``` docs/07-运维文档/菜单数据恢复指南.md ├─ 问题说明 ├─ 解决方案(3种导入方法) ├─ 验证步骤(数据库+前端) ├─ 注意事项(备份、权限、顺序) ├─ 常见问题Q&A └─ 相关文件索引 ``` ## 使用方法 ### 方法一:自动导入脚本(推荐) ```bash cd sql ./import_menu.sh ``` ### 方法二:手动导入SQL ```bash mysql -h127.0.0.1 -P3306 -uroot -p123456 pangu_user_platform < sql/sys_menu_complete.sql ``` ### 方法三:数据库客户端 使用Navicat/DataGrip执行sql/sys_menu_complete.sql ## 验证结果 ### 数据库验证 ```sql SELECT COUNT(*) FROM sys_menu; -- 预期:118条 SELECT CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END AS type, COUNT(*) AS count FROM sys_menu GROUP BY CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END; -- 预期:RuoYi 72条, 盘古 46条 ``` ### 前端验证 刷新页面后,菜单栏应显示: - ✅ 盘古管理 (order_num 0 - 最前面) - ✅ 系统管理 (order_num 1) - ✅ 系统监控 (order_num 2) - ✅ 系统工具 (order_num 3) - ✅ 若依官网 (order_num 4) ## 文件清单 - sql/sys_menu_complete.sql - 完整菜单SQL - sql/import_menu.sh - 自动导入脚本 - docs/07-运维文档/菜单数据恢复指南.md - 运维文档 --- 作者:湖北新华业务中台研发团队
2026-02-01 13:18:36 +08:00
SELECT
CASE
WHEN menu_id < 2000 THEN 'RuoYi系统菜单'
ELSE '盘古业务菜单'
END AS '菜单类型',
COUNT(*) AS '数量'
FROM sys_menu
GROUP BY CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END
WITH ROLLUP;"
echo ""
echo "顶级菜单:"
fix: 修复MySQL字符集问题,防止中文乱码 ## 问题描述 用户反馈:菜单comment字段可能出现乱码 ## 问题分析 ### 乱码原因 1. **MySQL连接字符集不匹配**: - 客户端未指定字符集 - 默认字符集与数据不匹配 2. **终端显示问题**: - 终端编码与数据库编码不一致 - 查询结果传输过程中字符集转换错误 ### 数据库状态检查 ```sql -- 当前配置 character_set_client = utf8mb4 ✅ character_set_connection = utf8mb4 ✅ character_set_database = utf8mb4 ✅ character_set_results = utf8mb4 ✅ -- 表字符集 sys_menu: utf8mb4_general_ci ✅ ``` ## 解决方案 ### 1. 更新import_menu.sh导入脚本 **修改**:所有mysql命令添加`--default-character-set=utf8mb4` ```bash # 修复前 ❌ mysql -h"$DB_HOST" -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" < "$SQL_FILE" # 修复后 ✅ mysql -h"$DB_HOST" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" < "$SQL_FILE" ``` ### 2. 创建字符集修复工具 **新增**:`sql/fix_charset.sh` **功能特性**: - ✅ 检查数据库字符集配置 - ✅ 检查表字符集设置 - ✅ 测试查询菜单数据 - ✅ 一键修复表字符集 - ✅ 自动备份原表数据 **使用方法**: ```bash cd sql ./fix_charset.sh ``` **修复流程**: 1. 检查当前字符集配置 2. 显示菜单数据(检测乱码) 3. 用户确认是否修复 4. 创建备份表 5. 转换表字符集为utf8mb4 6. 验证修复结果 ## 预防措施 ### 数据导入时 ```bash # 始终指定字符集 mysql --default-character-set=utf8mb4 -h... < file.sql ``` ### 数据查询时 ```bash # 查询时指定字符集 mysql --default-character-set=utf8mb4 -h... -e "SELECT ..." ``` ### 应用程序配置 ```yaml # application.yml中确保 spring: datasource: url: jdbc:mysql://...?characterEncoding=utf8mb4&useUnicode=true ``` ## 验证结果 ```sql SELECT menu_id, menu_name, remark FROM sys_menu WHERE parent_id = 0; 2000 盘古管理 盘古用户平台业务菜单 ✅ 1 系统管理 系统管理目录 ✅ 2 系统监控 系统监控目录 ✅ ``` ## 相关文件 - sql/import_menu.sh - 菜单导入脚本(已修复) - sql/fix_charset.sh - 字符集修复工具(新增) --- 作者:湖北新华业务中台研发团队
2026-02-01 13:21:43 +08:00
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" -e "
feat: 创建完整菜单数据恢复方案 ## 问题描述 用户反馈:菜单栏缺少RuoYi默认的系统管理菜单(用户管理、角色管理、菜单管理等),只显示盘古业务菜单 ## 问题分析 初始化数据库时,只导入了盘古业务菜单(pangu_menu.sql),缺少RuoYi的系统管理、系统监控、系统工具菜单 ## 解决方案 ### 1. 创建完整菜单SQL文件 ``` sql/sys_menu_complete.sql (196行, 118条菜单) ├─ RuoYi系统菜单: 72条 (menu_id 1-1999) │ ├─ 系统管理 (用户、角色、菜单、部门、岗位、字典、参数、通知、日志) │ ├─ 系统监控 (在线用户、定时任务、数据监控、服务监控、缓存监控) │ └─ 系统工具 (表单构建、代码生成、系统接口) └─ 盘古业务菜单: 46条 (menu_id >= 2000) └─ 盘古管理 (学校、会员、学生、应用、基础数据) ``` ### 2. 创建自动导入脚本 ```bash sql/import_menu.sh ├─ 数据库连接配置 ├─ SQL文件路径检查 ├─ 用户确认提示 ├─ 菜单数据导入 └─ 导入结果统计 ``` **功能特性**: - 自动检查SQL文件存在性 - 导入前用户确认 - 导入后自动统计菜单数量 - 显示顶级菜单列表 - 错误处理和友好提示 ### 3. 创建运维文档 ``` docs/07-运维文档/菜单数据恢复指南.md ├─ 问题说明 ├─ 解决方案(3种导入方法) ├─ 验证步骤(数据库+前端) ├─ 注意事项(备份、权限、顺序) ├─ 常见问题Q&A └─ 相关文件索引 ``` ## 使用方法 ### 方法一:自动导入脚本(推荐) ```bash cd sql ./import_menu.sh ``` ### 方法二:手动导入SQL ```bash mysql -h127.0.0.1 -P3306 -uroot -p123456 pangu_user_platform < sql/sys_menu_complete.sql ``` ### 方法三:数据库客户端 使用Navicat/DataGrip执行sql/sys_menu_complete.sql ## 验证结果 ### 数据库验证 ```sql SELECT COUNT(*) FROM sys_menu; -- 预期:118条 SELECT CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END AS type, COUNT(*) AS count FROM sys_menu GROUP BY CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END; -- 预期:RuoYi 72条, 盘古 46条 ``` ### 前端验证 刷新页面后,菜单栏应显示: - ✅ 盘古管理 (order_num 0 - 最前面) - ✅ 系统管理 (order_num 1) - ✅ 系统监控 (order_num 2) - ✅ 系统工具 (order_num 3) - ✅ 若依官网 (order_num 4) ## 文件清单 - sql/sys_menu_complete.sql - 完整菜单SQL - sql/import_menu.sh - 自动导入脚本 - docs/07-运维文档/菜单数据恢复指南.md - 运维文档 --- 作者:湖北新华业务中台研发团队
2026-02-01 13:18:36 +08:00
SELECT menu_id, menu_name, order_num, visible, status
FROM sys_menu
WHERE parent_id = 0
ORDER BY order_num;"
else
echo ""
echo "❌ 菜单数据导入失败!"
exit 1
fi
echo ""
echo "============================================================"
echo "导入完成!请刷新前端页面查看菜单。"
echo "============================================================"