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

相关推荐
夏木~44 分钟前
Oracle 中什么情况下 可以使用 EXISTS 替代 IN 提高查询效率
数据库·oracle
W21551 小时前
Liunx下MySQL:表的约束
数据库·mysql
黄名富1 小时前
Redis 附加功能(二)— 自动过期、流水线与事务及Lua脚本
java·数据库·redis·lua
言、雲1 小时前
从tryLock()源码来出发,解析Redisson的重试机制和看门狗机制
java·开发语言·数据库
机器之心1 小时前
图学习新突破:一个统一框架连接空域和频域
人工智能·后端
一个程序员_zhangzhen2 小时前
sqlserver新建用户并分配对视图的只读权限
数据库·sqlserver
zfj3212 小时前
学技术学英文:代码中的锁:悲观锁和乐观锁
数据库·乐观锁··悲观锁·竞态条件
吴冰_hogan2 小时前
MySQL InnoDB 存储引擎 Redo Log(重做日志)详解
数据库·oracle
.生产的驴2 小时前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven
顽疲2 小时前
springboot vue 会员收银系统 含源码 开发流程
vue.js·spring boot·后端