guoyu/log/问题/第二阶段-问题.md

7.9 KiB
Raw Blame History

第二阶段问题记录

问题记录格式

使用双链形式连接步骤文档,例如:第二阶段-代码整合到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脚本开头添加显式的字符集设置在注释块之前
      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 中添加导入:
      import javax.servlet.http.HttpServletRequest;
      
    2. ry-news-admin/pom.xml 中添加WebSocket依赖
      <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密码配置
      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 redisredis-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 - 已修改字段名
  • 状态:已解决