今天在写单元测试时,遇到一个很奇葩的问题,一直在报这样的错误:

Caused by: java.sql.SQLException: Access denied for user ''@'183.134.103.169' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1665)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1207)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2249)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2280)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2079)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:400)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:148)
at com.alibaba.druid.filter.FilterAdapter.connection_connect(FilterAdapter.java:785)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:142)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1423)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1477)
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:677)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1640)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1581)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1511)
... 62 more

分析来分析去,总是找不到错误的原因。于是想到,难道是Druid的配置问题?

于是重新看了下spring的数据库配置,

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="${db.url}"/>
<property name="name" value="${db.user}"/>
<property name="password" value="${db.password}"/>
<property name="initialSize" value="${db.initialSize}"/>
<property name="minIdle" value="${db.maxIdle}"/>
<property name="maxActive" value="${db.maxActive}"/>
<property name="maxWait" value="${db.maxWait}"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="60000"/>
<property name="validationQuery" value="SELECT 'x'"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<property name="filters" value="config"/>
<property name="connectionProperties" value="config.decrypt=true"/>
<!-- 每隔5分钟将监控日志输出到日志文件中,单位是毫秒。 -->
<property name="timeBetweenLogStatsMillis" value="300000"/>
</bean>

发现name这个属性感觉不太对劲,于是查阅文档。

原来这边配置的链接用户名应该是userName,而不是name。改为userName立刻解决问题,于是mark一下。

最新文章

  1. 在Ubuntu下安装ovs-dpdk
  2. CodeForces 698C LRU
  3. 数据可视化-EChart2.0.0使用中遇到的2个问题
  4. python之列表、字典、集合
  5. MYSQL 判断一个时间段是否在另一个时间段内。
  6. 李洪强经典面试题136-KVO-KVC
  7. css3效果
  8. CHAP认证原理
  9. cocos js响应过程
  10. Oracle中中文、数字,英文混杂形式的字段进行排序的方法
  11. Duplicate files copied in APK META-INF/LICENSE.txt
  12. Thymeleaf Javascript 取值
  13. UIViewAdditions(一个非常方便的工具类用它)
  14. B. Simple Game( Codeforces Round #316 (Div. 2) 简单题)
  15. shell if判断写成一行
  16. Android根据图片Uri获取图片path绝对路径的几种方法【转】
  17. NumPy-高速处理数据
  18. 无法将 Ethernet0连接到虚拟网络 VMnet8 以及无法使用桥接的详细解决步骤
  19. Java Jdk1.8 HashMap源代码阅读笔记二
  20. NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(转载)

热门文章

  1. jmeter 计数器 (可自动生成新数字、注册专用)
  2. ZSTU4266 回文 2017-03-22 14:25 55人阅读 评论(0) 收藏
  3. SQL编程:group by合并结果字符串 ---&gt; group_concat函数就能行
  4. 转:css实现强制不换行/自动换行/强制换行
  5. eclipse中不能找到dubbo.xsd报错”cvc-complex-type.2.4.c“的 两种解决方法
  6. #ifdef __cplusplus extern &quot;C&quot; { #endif 的解释
  7. 微服务中的健康监测以及其在ASP.NET Core服务中实现运行状况检查
  8. PostgreSQL 表空间
  9. Jenkins RestAPI调用出现Error 403 No valid crumb was included in the request
  10. 好看的table样式