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

🌝推测原因:

  1. 可能连接的MySQL中确实没有该数据库,所以unknown;
  2. Jar包有问题,要重新获取一下jar包;

二、解决办法

🌱根据原因一:

使用Navicat连接MySQL后,检查其中是否有该数据库,最后发现确实缺少遗漏了该数据库,笔者将代码中的JBDC的url更改为其他数据库后,执行没有问题,且可以返回正确的数据。

问题解决√

🌱根据原因二:

针对报错中提示的com.alibaba的jar包推测,如果是jar包有问题,建议去官网重新下载一个,或者去检查一下是否缺失;笔者的问题在原因一就解决了。

问题拓展:

关于MySQL,MySQL的使用中经常会遇到一些问题,比如说类似的报错。
其中最常见的就是 Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行)
它的解决方案如下:

  1. 首先先要考虑在我们 MySQL 数据库参数文件里面,对应的max_connections 这个参数值是不是设置的太小了,导致客户端连接数超过了数据库所承受的最大值。
    该值默认大小是151,我们可以根据实际情况进行调整。
    对应解决办法:set global max_connections=500
    但这样调整会有隐患,因为我们无法确认数据库是否可以承担这么大的连接压力,就好比原来一个人只能吃一个馒头,但现在却非要让他吃 10 个,他肯定接受不了。反应到服务器上面,就有可能会出现宕机的可能。
    所以这又反应出了,我们在新上线一个业务系统的时候,要做好压力测试。保证后期对数据库进行优化调整。

  2. 其次可以限制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报错问题的主要内容,如果未能解决你的问题,请参考以下文章