likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 8

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

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

共同问题以及解决方案:

驱动无法定位

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

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

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

"jdbc:mysql://localhost:3306/school";//(MySQL)
"jdbc:mariadb://localhost:3306/school";//(MariaDB)

并没有出现语法问题。

将问题定位到依赖。

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

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

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

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

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

网络提供的另一种思路是将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类,都能够正常编译。 出现以下错误:

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

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

拒绝访问

[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账号测试链接也是能够被正常访问,确实是密码的缘故。。。

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

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

其他小问题

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.
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.

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

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

JDBC_URL = "jdbc:mysql://localhost:3306/school?serverTimezone=UTC&useSSL=false";

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

JDBC_URL ="jdbc:mariadb://localhost:3306/school";

附:

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

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

在Idea上使用JDBC连接数据库遇到问题及解决方法 debian在idea配置tomcat时会出现selected directorie not valid tomcat home,如果强行运行会出现can not find Catalina.jar包.属于需要为当前用户开放权限

sudo chown -R your_user_now:your_user_now ~/apache-tomcat-(版本号)

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