平时在实验室接触得比较多的服务器便是Tomcat,在部署项目时不定时的会遇到一些问题。所以就决定把自己遇到过的问题归纳成博客,巩固知识,也方便大家查找。(不定期更新。。。。。)。
问题原因部分是自己的见解,如有错误,请各位指正。
1.java.sql.SQLException: null, message from server: "Host 'xxx.xxx.xxx.xxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
在部署项目到Tomcat时,服务启动起来以后,但是不能够正常运行,查看Tomcat的日志发现如上错误。此错误的原因是,mysql已经得到了大量(max_connect_errors)的主机’hostname’的在中途被中断了的连接请求累计超过10次,就再也无法连接上mysqld服务。比如项目中的数据库密码一直是错误的,但是又不断的在服务器上部署,导致错误的链接信息超过了10次(系统默认),数据库便会阻止对应的Host进行链接,这是数据库的一个自我保护错失,防止被暴力破解密码。
解决办法:
① 重启数据库,或者在mysql下进行FLUSH HOSTS;操作。这两个操作的原理是刷新mysql的数据,清空错误的链接信息。
② 在mysql的配置文件下修改默认允许的最大错误连接数。
max_connect_errors = 10 //表示最大允许10次
2.java.lang.IllegalArgumentException: MALFORMED
自己在遇到这个问题的原因都是因为war包文件中出现了中文命名的文件(图片等),网上还有其他的问题原因和解决办法暂时还没有遇到。
3.java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
这个问题很常见也很简单,意思是链接数据库的用户名(root)验证失败(没有使用密码,如果using password:yes 使用了密码),检查数据库配置,修改密码即可。
4.java.sql.SQLException: Connections could not be acquired from the underlying database!
由错误原因可以看出来,这是一个和SQL相关的错误。造成这个错误的原因有几个
a.数据库驱动配置错误
b.数据库连接地址出错
c.数据库的账号或者密码配置错误
d.数据库未启动或者权限不够
e.未引用对应的jar包
f.数据库账号没有远程访问权限
g.其他原因欢迎大家提出