You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2 Ubuntu部署SpringBoot项目遇EntityNotFoundException求助

排查AWS EC2 Ubuntu上SpringBoot项目的EntityNotFoundException错误

在AWS EC2 Ubuntu实例部署SpringBoot项目后,访问时出现错误:Servlet.service() for servlet [jsp] threw exception: jakarta.persistence.EntityNotFoundException。项目本地运行正常,EC2上可访问根路由,以下是具体排查步骤:

一、验证EC2本地MySQL连接有效性

  1. 登录EC2上的MySQL,确认账号密码正确:
mysql -u root -p

输入配置文件中的密码rootroot,若登录失败,说明账号密码不匹配,需调整MySQL密码或配置文件。

  1. 检查目标数据库liaisonmessaging是否存在:
SHOW DATABASES;

若不存在,需创建数据库或确认备份导入是否成功。

  1. 进入数据库,检查业务表是否存在且数据完整:
USE liaisonmessaging;
SHOW TABLES;
-- 可查询关键表数据,例如用户表
SELECT * FROM 你的用户表名 LIMIT 10;

若表不存在或数据缺失,说明备份导入失败,需重新导入。

  1. 确认root用户允许本地连接:
SELECT user, host FROM mysql.user WHERE user='root';

若host列不是localhost或127.0.0.1,需调整权限:

GRANT ALL PRIVILEGES ON liaisonmessaging.* TO 'root'@'localhost' IDENTIFIED BY 'rootroot';
FLUSH PRIVILEGES;

二、检查SpringBoot应用的数据库配置与日志

  1. 确认application.properties中的配置与EC2上的MySQL完全一致:
spring.datasource.url=jdbc:mysql://localhost:3306/liaisonmessaging
spring.datasource.username=root
spring.datasource.password=rootroot

重点核对数据库名、用户名、密码是否正确。

  1. 查看SpringBoot应用的启动日志,定位连接问题:
    找到应用日志文件(通常在war包所在目录的logs文件夹,或通过控制台输出查看),执行:
tail -f 你的应用日志路径.log

若日志中存在Cannot create PoolableConnectionFactory等连接错误,说明数据库连接失败;若仅出现EntityNotFoundException,则大概率是查询的实体在数据库中不存在。

三、确认MySQL服务状态与端口监听

  1. 检查MySQL服务是否正常运行:
sudo systemctl status mysql

若服务未启动,执行启动命令:

sudo systemctl start mysql
sudo systemctl enable mysql
  1. 验证MySQL是否监听本地3306端口:
sudo netstat -tulpn | grep 3306

输出应包含127.0.0.1:3306,确保本地连接可访问。

四、检查Apache代理配置正确性

  1. 确认Apache已启用proxy和ajp-proxy模块:
sudo a2enmod proxy proxy_ajp

若未启用,执行上述命令后重启Apache:

sudo systemctl restart apache2
  1. 检查虚拟主机配置中的ProxyPass规则,确保指向正确的AJP端口:
    打开虚拟主机配置文件(通常在/etc/apache2/sites-available/000-default.conf),确认存在如下配置:
ProxyPass / ajp://localhost:9090/
ProxyPassReverse / ajp://localhost:9090/

若配置错误,修改后重启Apache。

  1. 查看Apache错误日志,排查代理问题:
sudo tail -f /var/log/apache2/error.log

若日志中出现AH00896: failed to make connection to backend: localhost等错误,说明SpringBoot应用未在9090端口正常监听,需检查应用是否启动。

五、验证SpringBoot应用运行状态

  1. 检查应用进程是否存在:
ps aux | grep java

若未找到对应进程,说明应用未启动,需重新运行war包:

java -jar 你的项目war包名.war

建议使用后台运行方式,避免断开SSH后进程终止:

nohup java -jar 你的项目war包名.war &
  1. 检查应用是否监听9090端口:
sudo netstat -tulpn | grep 9090

若未监听该端口,需检查Application.java中的AJP配置是否正确,确认端口未被占用。


内容的提问来源于stack exchange,提问作者it_tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:09:55