在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,警告即可消失。

相关推荐
m0_748554816 小时前
golang如何实现用户订阅偏好管理_golang用户订阅偏好管理实现总结
jvm·数据库·python
小码哥_常7 小时前
解锁AI编程密码:程序员常用的10个AI提示词
后端
早日退休!!!7 小时前
《数据结构选型指南》笔记
数据结构·数据库·oracle
xcLeigh7 小时前
KES数据库性能优化实战
数据库·sql·性能优化·sql优化·数据性能
阿正呀7 小时前
Redis怎样实现本地缓存的高效失效通知
jvm·数据库·python
yoyo_zzm7 小时前
Laravel9.x新特性全解析
数据库·mysql·nginx
2501_901200538 小时前
mysql如何设置InnoDB引擎参数_优化innodb_buffer_pool
jvm·数据库·python
直奔標竿8 小时前
Java开发者AI转型第二十七课!Spring AI 个人知识库实战(六)——全栈闭环收官,解锁前端流式渲染终极技巧
java·开发语言·前端·人工智能·后端·spring
金銀銅鐵8 小时前
[java] 编译之后的记录类(Record Classes)长什么样子(上)
java·jvm·后端
m0_495496419 小时前
mysql处理复杂SQL性能_InnoDB优化器与MyISAM差异
jvm·数据库·python