183 lines
7.9 KiB
Markdown
183 lines
7.9 KiB
Markdown
|
|
# 第二阶段问题记录
|
|||
|
|
|
|||
|
|
## 问题记录格式
|
|||
|
|
使用双链形式连接步骤文档,例如:[[第二阶段-代码整合到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 1`
|
|||
|
|
- `Process failed (exit code = 1)`
|
|||
|
|
- **问题原因**:
|
|||
|
|
1. MySQL客户端连接的字符集设置不正确
|
|||
|
|
2. SQL脚本文件可能不是UTF-8编码
|
|||
|
|
3. 数据库字符集设置不正确
|
|||
|
|
4. SQL脚本中的字符集设置语句在注释块中,可能没有正确执行
|
|||
|
|
- **解决方案**:
|
|||
|
|
1. 在SQL脚本开头添加显式的字符集设置(在注释块之前):
|
|||
|
|
```sql
|
|||
|
|
SET NAMES utf8mb4;
|
|||
|
|
SET CHARACTER_SET_CLIENT = utf8mb4;
|
|||
|
|
SET CHARACTER_SET_CONNECTION = utf8mb4;
|
|||
|
|
SET CHARACTER_SET_RESULTS = utf8mb4;
|
|||
|
|
```
|
|||
|
|
2. 确保数据库创建时使用utf8mb4字符集
|
|||
|
|
3. 确保SQL文件保存为UTF-8编码(无BOM)
|
|||
|
|
4. 在DBeaver等工具中执行SQL时,确保连接字符集设置为utf8mb4
|
|||
|
|
5. 创建数据库初始化脚本 `ry_study_init_database.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: 找不到符号 - HttpServletRequest`
|
|||
|
|
- `java: 程序包org.springframework.web.socket.server.standard不存在`
|
|||
|
|
- `java: 找不到符号 - ServerEndpointExporter`
|
|||
|
|
- `java: 未知的枚举常量 javax.annotation.meta.When.MAYBE`
|
|||
|
|
- **问题原因**:
|
|||
|
|
1. `StudyScreenMonitorController` 中使用了 `HttpServletRequest` 但缺少导入
|
|||
|
|
2. WebSocket配置类使用了 `ServerEndpointExporter`,但缺少 `spring-boot-starter-websocket` 依赖
|
|||
|
|
3. `javax.annotation.meta.When.MAYBE` 错误可能是IDE或编译器的警告,不影响实际运行
|
|||
|
|
- **解决方案**:
|
|||
|
|
1. 在 `StudyScreenMonitorController.java` 中添加导入:
|
|||
|
|
```java
|
|||
|
|
import javax.servlet.http.HttpServletRequest;
|
|||
|
|
```
|
|||
|
|
2. 在 `ry-news-admin/pom.xml` 中添加WebSocket依赖:
|
|||
|
|
```xml
|
|||
|
|
<dependency>
|
|||
|
|
<groupId>org.springframework.boot</groupId>
|
|||
|
|
<artifactId>spring-boot-starter-websocket</artifactId>
|
|||
|
|
</dependency>
|
|||
|
|
```
|
|||
|
|
3. 重新编译项目:`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:6379`
|
|||
|
|
- `ERR Client sent AUTH, but no password is set` - 客户端发送了AUTH认证,但Redis服务器没有设置密码
|
|||
|
|
- **问题原因**:
|
|||
|
|
1. Redis服务可能没有启动
|
|||
|
|
2. 应用配置了Redis密码,但本地Redis服务器没有设置密码
|
|||
|
|
3. Redis密码配置不匹配
|
|||
|
|
- **解决方案**:
|
|||
|
|
|
|||
|
|
**方案A:如果本地Redis没有密码(推荐开发环境)**
|
|||
|
|
1. 打开 `RuoYi-Vue-redis/ry-news-admin/src/main/resources/application.yml`
|
|||
|
|
2. 注释掉或删除Redis密码配置:
|
|||
|
|
```yaml
|
|||
|
|
spring:
|
|||
|
|
redis:
|
|||
|
|
host: 127.0.0.1
|
|||
|
|
port: 6379
|
|||
|
|
database: 0
|
|||
|
|
# password: xbZttkmndxCkWsycjs2 # 注释掉密码
|
|||
|
|
password: # 或者设置为空
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**方案B:如果Redis有密码**
|
|||
|
|
1. 确保Redis服务已启动
|
|||
|
|
2. 检查Redis密码是否正确
|
|||
|
|
3. 确保配置文件中的密码与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 exist`
|
|||
|
|
- `The error may exist in file [StudySubjectMapper.xml]`
|
|||
|
|
- **问题原因**:
|
|||
|
|
1. 学习系统的数据库表还没有创建
|
|||
|
|
2. 只执行了RuoYi基础SQL脚本,但没有创建学习系统相关的表
|
|||
|
|
- **解决方案**:
|
|||
|
|
1. 创建学习系统表结构SQL脚本 `ry_study_create_tables.sql`
|
|||
|
|
2. 脚本包含以下表:
|
|||
|
|
- `subject` - 学科分类表
|
|||
|
|
- `class` - 班级表
|
|||
|
|
- `courseware` - 课件表
|
|||
|
|
- `course` - 课程表
|
|||
|
|
- `course_assignment` - 课程分配表
|
|||
|
|
- `student_class` - 学员班级关联表
|
|||
|
|
- `learning_record` - 学习记录表
|
|||
|
|
- `learning_detail` - 学习详情记录表
|
|||
|
|
- `monitor_record` - 学习监控表
|
|||
|
|
3. 执行SQL脚本创建表结构
|
|||
|
|
4. 确保表名和字段与Mapper XML中的定义完全一致
|
|||
|
|
- **相关文件**:
|
|||
|
|
- `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
|
|||
|
|
- **错误信息**:
|
|||
|
|
- 点击菜单后页面无反应,无法跳转
|
|||
|
|
- **问题原因**:
|
|||
|
|
1. 后端Controller路径与前端API路径不匹配:
|
|||
|
|
- 后端:`@RequestMapping("/study/learning")`
|
|||
|
|
- 前端API:`/study/learningRecord/list`
|
|||
|
|
2. 后端权限配置与菜单权限不匹配:
|
|||
|
|
- 后端:`study:learning:list`
|
|||
|
|
- 菜单:`study:learningRecord:list`
|
|||
|
|
3. 前端页面字段名与后端实体类字段名不匹配:
|
|||
|
|
- 前端:`courseTitle`, `studyCount`, `lastStudyTime`
|
|||
|
|
- 后端:`courseId`, `learnCount`, `lastLearnTime`
|
|||
|
|
- **解决方案**:
|
|||
|
|
1. 修改后端Controller路径:`/study/learning` → `/study/learningRecord`
|
|||
|
|
2. 修改后端权限配置:`study:learning:*` → `study:learningRecord:*`
|
|||
|
|
3. 修改前端页面字段名,与后端实体类保持一致
|
|||
|
|
- **相关文件**:
|
|||
|
|
- `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` - 已修改字段名
|
|||
|
|
- **状态**:已解决
|
|||
|
|
|