在Idea上使用JDBC连接数据库遇到问题及解决方法

笔者近日在进行javaweb课程设计的学习,在其中一次作业时遇到了一些问题,感谢伟大的互联网开源精神,在经过逐次试错验证终获解决,

作业的内容:index.jsp中提交信息到servlet,从数据库中执行对应操作,并以表格形式显示到show.jsp上。

共同问题以及解决方案:

驱动无法定位

No suitable driver found for jdbc:mysql://localhost:3306/school

笔者发现网上出现此类问题一般由于URL地址问题,检查我的URL地址:

arduino 复制代码
"jdbc:mysql://localhost:3306/school";//(MySQL)
"jdbc:mariadb://localhost:3306/school";//(MariaDB)

并没有出现语法问题。

将问题定位到依赖。

下载官方连接数据库的jar包并放在WEB-INF包下lib包中,并且在project Structure中添加了该包的依赖,但仍然报错。


考虑到在Tomcat的lib目录下的jar能被所有的部署应用共享使用到的,而单独应用的WEB-INF下的,是自己独立使用的。于是将官方的jar包放在了tomcat的lib包下,之后再移除WEB-INF下lib包的jar包后,便解决此类报错的发生。 虽然为以后不同应用对该jar包的不同版本的依赖问题的处理带来了不便,但总算能解决问题所在

网络提供的另一种思路是将jar包置于jre文件夹下lib包下ext包中,由于笔者根据教程在Linux系统下载openjdk之后,/usr/lib中只找到了jvm文件夹,windows下载的下载路径下则为JDK文件夹,所以并没有验证此方法。

无法编译:

xx Cannot be resolve

笔者此前创建一个Main文件夹,将Students等类置入其中,然而在import student类的show.jsp中出现无法编译的错误,经检验日志,将错误定位到Main文件夹上,认为是与src包中的自动生成的Main类同名,测试单独修改Main文件夹名或者Main类,都能够正常编译。 出现以下错误:

拒绝访问

[28000][1045]Acess denied for User 'root'@'localhost(using password:YES)'

先前在单独连接数据库就遇到此种情况,由于在按照教程cn.linux-console.net/?p=10707 重新设计密码后没有重启应用的问题,导致连接一直被拒绝,认为是用户权限问题,于是便参考教程cn.linux-console.net/?p=22402 添加用户并授予权限,以解决idea链接数据库被拒绝的问题,此次jdbc连接数据库也出现同样的问题在控制台中,经过后续多次的校验,发现原先的root账号测试链接也是能够被正常访问,确实是密码的缘故。。。

其他小问题

vbnet 复制代码
java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
vbnet 复制代码
Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

在解决以上问题后才出现问题:也就是在url中添加时区的设置,在2024.1版本的idea中输入?se时即会弹出完整语句可以自动补全此地址。

ini 复制代码
JDBC_URL = "jdbc:mysql://localhost:3306/school?serverTimezone=UTC&useSSL=false";

而在linux系统使用MariaDB则不必添加这些,项目可以正常运行。

ini 复制代码
JDBC_URL ="jdbc:mariadb://localhost:3306/school";

附:

在debian上tomcat的配置,笔者参考这篇文章cn.linux-console.net/?p=15511 的做法,采用文章第二种方法手动安装)

debian在idea配置tomcat时会出现selected directorie not valid tomcat home,如果强行运行会出现can not find Catalina.jar包.属于需要为当前用户开放权限

bash 复制代码
sudo chown -R your_user_now:your_user_now ~/apache-tomcat-(版本号)

之后重启idea,警告即可消失。

相关推荐
阿华的代码王国6 分钟前
MySQL ------- 索引(B树B+树)
数据库·mysql
Hello.Reader34 分钟前
StarRocks实时分析数据库的基础与应用
大数据·数据库
执键行天涯36 分钟前
【经验帖】JAVA中同方法,两次调用Mybatis,一次更新,一次查询,同一事务,第一次修改对第二次的可见性如何
java·数据库·mybatis
yanglamei19621 小时前
基于GIKT深度知识追踪模型的习题推荐系统源代码+数据库+使用说明,后端采用flask,前端采用vue
前端·数据库·flask
Adolf_19931 小时前
Flask-JWT-Extended登录验证, 不用自定义
后端·python·flask
叫我:松哥1 小时前
基于Python flask的医院管理学院,医生能够增加/删除/修改/删除病人的数据信息,有可视化分析
javascript·后端·python·mysql·信息可视化·flask·bootstrap
海里真的有鱼1 小时前
Spring Boot 项目中整合 RabbitMQ,使用死信队列(Dead Letter Exchange, DLX)实现延迟队列功能
开发语言·后端·rabbitmq
工作中的程序员1 小时前
ES 索引或索引模板
大数据·数据库·elasticsearch
严格格1 小时前
三范式,面试重点
数据库·面试·职场和发展
工业甲酰苯胺1 小时前
Spring Boot 整合 MyBatis 的详细步骤(两种方式)
spring boot·后端·mybatis