java.sql.SQLSyntaxErrorException: Unknown database报错问题
Posted Just Coding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.sql.SQLSyntaxErrorException: Unknown database报错问题相关的知识,希望对你有一定的参考价值。
java.sql.SQLSyntaxErrorException: Unknown database报错问题
一、出现原因
笔者在测试接口启动项目Java连接mysql数据库时,出现了如下报错:java.sql.SQLSyntaxErrorException: Unknown database
🌝推测原因:
- 可能连接的MySQL中确实没有该数据库,所以unknown;
- Jar包有问题,要重新获取一下jar包;
二、解决办法
🌱根据原因一:
使用Navicat连接MySQL后,检查其中是否有该数据库,最后发现确实缺少遗漏了该数据库,笔者将代码中的JBDC的url更改为其他数据库后,执行没有问题,且可以返回正确的数据。
问题解决√
🌱根据原因二:
针对报错中提示的com.alibaba的jar包推测,如果是jar包有问题,建议去官网重新下载一个,或者去检查一下是否缺失;笔者的问题在原因一就解决了。
问题拓展:
关于MySQL,MySQL的使用中经常会遇到一些问题,比如说类似的报错。
其中最常见的就是 Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行)
它的解决方案如下:
-
首先先要考虑在我们 MySQL 数据库参数文件里面,对应的max_connections 这个参数值是不是设置的太小了,导致客户端连接数超过了数据库所承受的最大值。
该值默认大小是151,我们可以根据实际情况进行调整。
对应解决办法:set global max_connections=500
但这样调整会有隐患,因为我们无法确认数据库是否可以承担这么大的连接压力,就好比原来一个人只能吃一个馒头,但现在却非要让他吃 10 个,他肯定接受不了。反应到服务器上面,就有可能会出现宕机的可能。
所以这又反应出了,我们在新上线一个业务系统的时候,要做好压力测试。保证后期对数据库进行优化调整。 -
其次可以限制Innodb 的并发处理数量,如果 innodb_thread_concurrency = 0(这种代表不受限制) 可以先改成 16或是64 看服务器压力。如果非常大,可以先改的小一点让服务器的压力下来之后,然后再慢慢增大,根据自己的业务而定。个人建议可以先调整为 16 即可。
MySQL 随着连接数的增加性能是会下降的,可以让开发配合设置 thread pool,连接复用。在MySQL商业版中加入了thread pool这项功能,另外对于有的监控程序会读取 information_schema 下面的表,可以考虑关闭下面的参数。
innodb_stats_on_metadata=0
set global innodb_stats_on_metadata=0
有帮助的话,欢迎点赞👍、收藏⭐️+关注✌️哟~
以上是关于java.sql.SQLSyntaxErrorException: Unknown database报错问题的主要内容,如果未能解决你的问题,请参考以下文章