7.9 KiB
7.9 KiB
第二阶段问题记录
问题记录格式
使用双链形式连接步骤文档,例如:第二阶段-代码整合到RuoYi
问题列表
问题1
- 关联步骤:第二阶段-代码整合到RuoYi
- 问题描述:执行SQL脚本时出现字符编码错误
- 发生时间:2025-11-11
- 错误信息:
ERROR 1366 (HY000) at line 10: Incorrect string value: '\xAE\xE5\xBD\x95' for column 'remark' at row 1Process failed (exit code = 1)
- 问题原因:
- MySQL客户端连接的字符集设置不正确
- SQL脚本文件可能不是UTF-8编码
- 数据库字符集设置不正确
- SQL脚本中的字符集设置语句在注释块中,可能没有正确执行
- 解决方案:
- 在SQL脚本开头添加显式的字符集设置(在注释块之前):
SET NAMES utf8mb4; SET CHARACTER_SET_CLIENT = utf8mb4; SET CHARACTER_SET_CONNECTION = utf8mb4; SET CHARACTER_SET_RESULTS = utf8mb4; - 确保数据库创建时使用utf8mb4字符集
- 确保SQL文件保存为UTF-8编码(无BOM)
- 在DBeaver等工具中执行SQL时,确保连接字符集设置为utf8mb4
- 创建数据库初始化脚本
ry_study_init_database.sql用于正确创建数据库
- 在SQL脚本开头添加显式的字符集设置(在注释块之前):
- 相关文件:
log/Sql/ry_study_init_database.sql- 数据库初始化脚本log/Sql/ry_news_2025-10-31_16-51-20_mysql_data_G7xyv.sql- 已添加字符集设置log/Sql/ry_study_menu_study_system.sql- 已添加字符集设置
- 状态:已解决
验证结果
执行字符集验证命令后,确认所有关键字符集都已正确设置为utf8mb4:
character_set_client: utf8mb4 ✅character_set_connection: utf8mb4 ✅character_set_database: utf8mb4 ✅character_set_results: utf8mb4 ✅character_set_server: utf8mb4 ✅collation_database: utf8mb4_general_ci ✅
结论:字符集配置正确,可以正常执行SQL脚本。
问题2
- 关联步骤:第二阶段-代码整合到RuoYi
- 问题描述:编译错误 - 缺少导入和依赖
- 发生时间:2025-11-11
- 错误信息:
java: 找不到符号 - HttpServletRequestjava: 程序包org.springframework.web.socket.server.standard不存在java: 找不到符号 - ServerEndpointExporterjava: 未知的枚举常量 javax.annotation.meta.When.MAYBE
- 问题原因:
StudyScreenMonitorController中使用了HttpServletRequest但缺少导入- WebSocket配置类使用了
ServerEndpointExporter,但缺少spring-boot-starter-websocket依赖 javax.annotation.meta.When.MAYBE错误可能是IDE或编译器的警告,不影响实际运行
- 解决方案:
- 在
StudyScreenMonitorController.java中添加导入:import javax.servlet.http.HttpServletRequest; - 在
ry-news-admin/pom.xml中添加WebSocket依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> - 重新编译项目:
mvn clean install
- 在
- 相关文件:
RuoYi-Vue-redis/ry-news-admin/src/main/java/com/ddnai/web/controller/study/StudyScreenMonitorController.java- 已添加HttpServletRequest导入RuoYi-Vue-redis/ry-news-admin/pom.xml- 已添加WebSocket依赖RuoYi-Vue-redis/ry-news-admin/src/main/java/com/ddnai/web/config/WebSocketConfig.java- WebSocket配置类
- 状态:已解决
问题3
-
关联步骤:第二阶段-代码整合到RuoYi
-
问题描述:Redis连接失败 - 无法连接到Redis服务器
-
发生时间:2025-11-11
-
错误信息:
Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379ERR Client sent AUTH, but no password is set- 客户端发送了AUTH认证,但Redis服务器没有设置密码
-
问题原因:
- Redis服务可能没有启动
- 应用配置了Redis密码,但本地Redis服务器没有设置密码
- Redis密码配置不匹配
-
解决方案:
方案A:如果本地Redis没有密码(推荐开发环境)
- 打开
RuoYi-Vue-redis/ry-news-admin/src/main/resources/application.yml - 注释掉或删除Redis密码配置:
spring: redis: host: 127.0.0.1 port: 6379 database: 0 # password: xbZttkmndxCkWsycjs2 # 注释掉密码 password: # 或者设置为空
方案B:如果Redis有密码
- 确保Redis服务已启动
- 检查Redis密码是否正确
- 确保配置文件中的密码与Redis服务器密码一致
方案C:启动Redis服务(如果未启动)
- Windows: 运行Redis服务或使用Docker启动
- Linux:
sudo systemctl start redis或redis-server - 检查Redis是否运行:
redis-cli ping(应该返回PONG)
方案D:临时禁用Redis(仅用于测试,不推荐)
- 如果暂时不需要Redis功能,可以注释掉Redis相关配置
- 但RuoYi的缓存和会话管理依赖Redis,建议启动Redis服务
- 打开
-
相关文件:
RuoYi-Vue-redis/ry-news-admin/src/main/resources/application.yml- Redis配置
-
状态:已解决
实际解决:
- 确认Redis服务正常运行且没有密码
- 在
application.yml中注释掉password: xbZttkmndxCkWsycjs2配置 - 重新启动后端服务,Redis连接成功
问题4
- 关联步骤:第二阶段-代码整合到RuoYi
- 问题描述:数据库表不存在错误 -
Table 'ry_study.subject' doesn't exist - 发生时间:2025-11-11
- 错误信息:
Table 'ry_study.subject' doesn't existThe error may exist in file [StudySubjectMapper.xml]
- 问题原因:
- 学习系统的数据库表还没有创建
- 只执行了RuoYi基础SQL脚本,但没有创建学习系统相关的表
- 解决方案:
- 创建学习系统表结构SQL脚本
ry_study_create_tables.sql - 脚本包含以下表:
subject- 学科分类表class- 班级表courseware- 课件表course- 课程表course_assignment- 课程分配表student_class- 学员班级关联表learning_record- 学习记录表learning_detail- 学习详情记录表monitor_record- 学习监控表
- 执行SQL脚本创建表结构
- 确保表名和字段与Mapper XML中的定义完全一致
- 创建学习系统表结构SQL脚本
- 相关文件:
log/Sql/ry_study_create_tables.sql- 学习系统表结构SQL脚本RuoYi-Vue-redis/ry-news-system/src/main/resources/mapper/study/- Mapper XML文件
- 状态:已解决(已创建SQL脚本,待执行)
问题5
- 关联步骤:第二阶段-代码整合到RuoYi
- 问题描述:学习记录菜单点击没有反应
- 发生时间:2025-11-11
- 错误信息:
- 点击菜单后页面无反应,无法跳转
- 问题原因:
- 后端Controller路径与前端API路径不匹配:
- 后端:
@RequestMapping("/study/learning") - 前端API:
/study/learningRecord/list
- 后端:
- 后端权限配置与菜单权限不匹配:
- 后端:
study:learning:list - 菜单:
study:learningRecord:list
- 后端:
- 前端页面字段名与后端实体类字段名不匹配:
- 前端:
courseTitle,studyCount,lastStudyTime - 后端:
courseId,learnCount,lastLearnTime
- 前端:
- 后端Controller路径与前端API路径不匹配:
- 解决方案:
- 修改后端Controller路径:
/study/learning→/study/learningRecord - 修改后端权限配置:
study:learning:*→study:learningRecord:* - 修改前端页面字段名,与后端实体类保持一致
- 修改后端Controller路径:
- 相关文件:
RuoYi-Vue-redis/ry-news-admin/src/main/java/com/ddnai/web/controller/study/StudyLearningRecordController.java- 已修改路径和权限RuoYi-Vue-redis/ruoyi-ui/src/views/study/learningRecord/index.vue- 已修改字段名
- 状态:已解决