从零启动 ruoyi-vue-pro 单体后端:JDK 8、MySQL、Redis 与常见报错排查0720

从零启动 ruoyi-vue-pro 单体后端:JDK 8、MySQL、Redis 与常见报错排查

本文基于本地 ruoyi-vue-pro 单体项目的实际启动过程整理。目标不是"把项目点起来",而是理解启动依赖,并能够定位常见环境问题。

1. 先分清项目版本:单体版不是微服务版

芋道源码常见有两类项目:

text 复制代码
ruoyi-vue-pro:单体多模块项目
yudao-cloud:微服务项目

两者目录结构相似,但启动方式不同。

当前项目是 ruoyi-vue-pro 单体版,因此本地开发不需要启动:

text 复制代码
Nacos
Gateway
多个 system / infra 微服务

只需要启动一个 Java 进程:

text 复制代码
YudaoServerApplication

它会加载当前已启用的模块。默认通常启用 systeminfra,商城、支付、工作流等模块显示"已禁用"是正常日志,不是启动失败。

2. 本地启动依赖关系

后端启动不是只点击 Java 的 main 方法,而是依赖以下基础设施:

text 复制代码
YudaoServerApplication
        │
        ├── MySQL:业务数据、用户、角色、菜单、日志等
        │
        └── Redis:缓存、Token、分布式锁等

因此,正确顺序是:

text 复制代码
启动 MySQL
→ 创建并导入数据库
→ 启动 Redis
→ 启动 YudaoServerApplication

3. JDK 版本怎么确认?

不要看到新项目就直接使用 JDK 17 或 JDK 21,要先看项目根目录的 pom.xml

xml 复制代码
<revision>2026.06-jdk8-SNAPSHOT</revision>
<java.version>1.8</java.version>

因此当前项目应使用:

text 复制代码
JDK 8
Project SDK:1.8
Language level:8

可以在 PowerShell 验证:

powershell 复制代码
java -version
javac -version

4. MySQL 配置与数据库初始化

本地数据库连接配置位于:

text 复制代码
yudao-server/src/main/resources/application-local.yaml

关键配置示例:

yaml 复制代码
spring:
  datasource:
    dynamic:
      datasource:
        master:
          url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro-jdk8
          username: root
          password: ******

注意:url 中的数据库名必须真实存在。

4.1 创建数据库

登录 MySQL:

powershell 复制代码
mysql -u root -p

然后执行:

sql 复制代码
CREATE DATABASE `ruoyi-vue-pro-jdk8`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

USE `ruoyi-vue-pro-jdk8`;

4.2 导入初始化 SQL

项目 SQL 文件位于:

text 复制代码
sql/mysql/ruoyi-vue-pro.sql

在 MySQL 客户端执行:

sql 复制代码
USE `ruoyi-vue-pro-jdk8`;

SOURCE D:/0714Springboot/ruoyi-vue-pro/sql/mysql/ruoyi-vue-pro.sql;

导入完成后验证:

sql 复制代码
SHOW TABLES;

预期能看到:

text 复制代码
system_users
system_role
system_menu
infra_api_access_log

5. 常见 MySQL 报错排查

5.1 Unknown database 'ruoyi-vue-pro-jdk8'

含义:后端能连接到 MySQL 服务,但配置中的数据库不存在。

解决:

sql 复制代码
CREATE DATABASE `ruoyi-vue-pro-jdk8` DEFAULT CHARACTER SET utf8mb4;
USE `ruoyi-vue-pro-jdk8`;
SOURCE D:/0714Springboot/ruoyi-vue-pro/sql/mysql/ruoyi-vue-pro.sql;

5.2 No database selected

含义:执行 SQL 导入前,没有选择目标数据库。

错误示例:

sql 复制代码
SOURCE D:/0714Springboot/ruoyi-vue-pro/sql/mysql/ruoyi-vue-pro.sql;

正确顺序:

sql 复制代码
USE `ruoyi-vue-pro-jdk8`;
SOURCE D:/0714Springboot/ruoyi-vue-pro/sql/mysql/ruoyi-vue-pro.sql;

含义:Java 程序无法连到 MySQL 的 127.0.0.1:3306,通常是 MySQL 未启动。

验证命令:

powershell 复制代码
Test-NetConnection 127.0.0.1 -Port 3306 -InformationLevel Quiet

输出为 True 才表示端口可用。

6. Redis 为什么是必需的?

项目不仅用 Redis 做普通缓存,还会用它支撑:

text 复制代码
登录 Token 缓存
字典缓存
分布式锁
限流
验证码等临时数据

默认 Redis 配置同样在 application-local.yaml

yaml 复制代码
spring:
  redis:
    host: 127.0.0.1
    port: 6379
    database: 0

验证 Redis 端口:

powershell 复制代码
Test-NetConnection 127.0.0.1 -Port 6379 -InformationLevel Quiet

如果 Redis 未启动,后端通常会出现:

text 复制代码
Unable to connect to Redis server: 127.0.0.1:6379
Connection refused

这并不是 Java 代码错误,而是基础设施尚未就绪。

7. 最终启动后端

在 IDEA 中运行:

text 复制代码
cn.iocoder.yudao.server.YudaoServerApplication

默认端口是:

text 复制代码
48080

当控制台输出"项目启动成功"时,可以访问一个需要登录的接口验证服务:

text 复制代码
http://127.0.0.1:48080/admin-api/system/auth/get-permission-info

返回 HTTP 401 或"账号未登录"是正常的,它说明:

text 复制代码
后端服务已启动
→ 请求已经到达 Spring Boot
→ 接口鉴权已经生效

8. 面试怎么讲?

可以这样回答:

我本地启动 ruoyi-vue-pro 单体项目时,先确认项目使用 JDK 8,再启动 MySQL 和 Redis。MySQL 负责用户、权限、日志等持久化数据,Redis 不仅用于缓存,也支撑 Token、验证码和分布式能力。初始化数据库后,启动 YudaoServerApplication 即可加载 system 和 infra 模块。排查启动问题时,我会从异常链最底层判断是数据库连接、数据库不存在,还是 Redis 端口未启动,而不是直接修改 Mapper 或业务代码。

9. 我的复盘

  • 能解释单体项目和微服务项目的启动差异。
  • 能解释 MySQL、Redis 分别承担什么职责。
  • 能根据 Unknown databaseNo database selectedConnection refused 定位问题。
  • 能独立完成一次后端启动。

下一篇:ruoyi-vue-pro 后台登录链路:从 AuthController 到 Token、Redis 的完整流程

相关推荐
腻害兔1 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:ERP 企业资源模块,一个轻量级进销存的完整实现?
前端·javascript·vue.js·人工智能·前端框架·产品经理·ai编程
Vect__1 小时前
MySQL 数据类型和约束:从字段设计到表结构建模
数据库·mysql
糖果店的幽灵2 小时前
langgraph的四种state解析
java·前端·javascript·langgraph
杨充2 小时前
4.接口而非实现编程
java·后端·架构
梦梦代码精2 小时前
基于ThinkPHP6 + Vue3的家政预约系统全解析:从LBS定位到自动派单的完整实现
java·docker·开源·php·代码规范
Simon_He2 小时前
AI 对话里的流式 Markdown 为什么难:从不完整 Token 到增量渲染
vue.js
wear工程师2 小时前
@Transactional 标了却没开事务?先看这次调用有没有经过代理
java·spring
Joey_friends2 小时前
指纹authenticate流程图
android·java·c++
达子6662 小时前
第4章_图解HarmonyOS 的结构
vue.js
郑州光合科技余经理2 小时前
家政O2O平台解析:从0搭建上门预约小程序解决方案
android·java·开发语言·前端·小程序·架构·php