c3p0数据库连接池无法连接数据库—错误使用了username关键字
一、问题描述
上篇博客说到了关于maven无法下载依赖jar包的问题,这篇博客再说一下关于在本个项目中遇到的关于使用C3P0连接池连接数据库的问题,真心很奇葩,在此,也请大家引起注意。首先看我的项目基本结构:
已确定的情况:相关jar包均已正确下载,路径跳转正常,jdbc所配置的内容,完全正确。相关数据库连接池和spring的整合也都完全正确,但事实就是没法儿连接上!
解决了几个拼写错误,小的属性配置错误后,仍是连接失败,报错最多的就是:
1,Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!
2,com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
和另外一个刚开始没看明白的,事实上提示很清楚的错误:
java.sql.SQLException: Access denied for user 'AngelHHX'@'localhost' (using password: YES)
二、解决过程
2.1,找工具的原因
从网上查的无法连接的解决办法是:开放MySQL的权限,让当前用户获取访问权限;修改密码;重装数据库;可能没有下载MySQL的驱动。经过一一排查,都尝试了一遍,就差重装数据库了。
这时候,查看了之前用的关于c3p0数据库连接池的用法,也用可视化工具连接了自己 的数据库,确定从理论上都没有任何问题,所以,就感觉是不是这个版本的c3p0连接池出问题了,所以给换了之前也用过的Druid,结果还是报一样的错,这时候就明显感觉到不是连接池的原因了,为了解决最初的问题,又给换回了c3p0.
2.2,找代码的原因
等到确立了连接池和数据库都没有问题后,就从jdbc.properties文件里面找问题,于是写了段代码,直接用jdbc拿着文件里面的用户名、密码、驱动、数据库连接地址进行数据库操作测试,结果是正常的。也就是说jdbc.properties文件里面的变量赋值也都完全正确。
2.3,找工具与工具之间结合的原因
因为再一次确定变量的值都没有问题,那么就开始查看spring和数据库连接池的配置文件,首先是检查jdbc.properties的文件路径,正确! 然后再是检查了相应的数据库连接池的属性配置(不同的数据库连接池,属性可能不一样,就像c3p0用jdbcUrl,而Druid用url)结果都能对上。最后检查从jdbc.properties里面取值是否正确,也依然正确。这时候问题就好像往奇葩和无解的路上,又走了一步。
因为再三检查各地配置,而直接用jdbc连接是正常的,所以问题还是被定位到了配置文件从jdbc.properties文件取变量值的这一步。于是,先不用变量,直接把值赋到配置文件,经过测试,成功。问题进一步明确,绝对是出在了变量取值的过程中,所以一个一个变量进行测试,最终确定是数据库连接用户名username的变量出了问题。
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/XXXXX
username=root
password=XXXXX
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driver}" />
<property name="jdbcUrl" value="${url}" />
<property name="user" value="${username}" />
<property name="password" value="${password}" />
又回到最开始系统报错的提示上:java.sql.SQLException: Access denied for user 'AngelHHX'@'localhost' (using password: YES) 我当时还想,这个AngelHHX用户名是什么意思,从哪儿来的,这不是我的电脑用户名吗,怎么跑到这里来了。 但问题也就出在了这里,当我在jdbc.properties用username变量名称的时候,它根本没有被我指定的root赋值,而是获取了我本地电脑用户名,进一步导致程序出错。当我把这个变量名称换成别的任何规范名称后,无问题!
2.4,找电脑默认语言的原因
经过了第三步,我已经确认那个username可能是用到电脑的关键字了,我一想到我的默认语言是英语,然后这是不是有影响呢?(因为我看别人用username当变量,貌似没有出问题)于是,我将系统默认语言改回了中文。测试,仍然报错,也肯定了一个事实:跟我系统的默认语言没有关系
到此,很费解别人那个代码上的username,究竟是怎么运行通过的,也或者他们也没有通过,嘎嘎嘎嘎嘎。。。。。。。。
三、总结
问题解决了,但是从解决这个问题的过程中,发现了自己很多有待提升的地方。审视我最近解决项目问题的步骤和思路,很明显的发现,我这逻辑和步骤都不是那么快、准、狠。这可能是和我对程序运行的基本步骤不甚了解有关,也可能是和我自己看问题的全局观有关。不管怎样,我感觉我接下来要做的一件大事,就是去分析我解决每一个问题的惯用思维和效率。
c3p0数据库连接池无法连接数据库—错误使用了username关键字的更多相关文章
- paip.c3p0 数据库连接池 NullPointerException 的解决...
paip.c3p0 数据库连接池 NullPointerException 的解决... 程序ide里面运行正常..外面bat运行错误.. 作者Attilax 艾龙, EMAIL:14665198 ...
- paip.提升稳定性---c3p0数据库连接池不能取到连接An attempt by a client to checkout a Connection has timed out
paip.提升稳定性---c3p0数据库连接池不能取到连接An attempt by a client to checkout a Connection has timed out 作者Attilax ...
- c3p0数据库连接池(作用不重复)
/* * c3p0数据库连接池: * 只被初始化一次 * connection对象进行close时,不是正的关闭,而是将该数据连接归还给数据库连接池 * * */ 四个架包 mysql-connect ...
- C3P0数据库连接池使用方法
一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大 ...
- c3p0数据库连接池 原创: Java之行 Java之行 5月8日 一、连接池概述 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程
c3p0数据库连接池 原创: Java之行 Java之行 5月8日 一.连接池概述 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 DB连接池HikariCP为什么如此快 原创: D ...
- 【Java EE 学习 16 上】【dbcp数据库连接池】【c3p0数据库连接池】
一.回顾之前使用的动态代理的方式实现的数据库连接池: 代码: package day16.utils; import java.io.IOException; import java.lang.ref ...
- [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- springboot 使用c3p0数据库连接池
springboot 使用c3p0数据库连接池的方法 本文转自:http://www.cnblogs.com/xiaosiyuan/p/6255292.html 使用springboot开发时,默认 ...
- c3p0 数据库连接池相关知识
c3p0数据库连接池的配置文件放在eclipse的src目录下,代码就可以识别. c3p0的配置文件的内容如下: <!-- Uncomment and set any of the option ...
随机推荐
- 【虚拟机-网关】如何在使用应用程序网关和 Nginx 的环境下实现强制 HTTPS 跳转
背景介绍 大家在使用 Nginx 部署网站时,实现 HTTP 到 HTTPS 的强制跳转是非常容易的事情,一般可以使用rewrite 命令或者使用返回自定义 301 页面的方法对 HTTP 请求进行 ...
- POJ Dollar Dayz 美元假日(完全背包,常规+大数)
题意:给出整数n和k,n代表拥有的钱数量,k代表有k种工具,其价钱分别为1~k.求n元能有多少种购买的方案. 思路:k最大有100,数量过大,要用大数.其他的基本和完全背包一样. #include & ...
- fpga Verilog hdl 按键消抖 部分程序讲解
module debounce(clk_in,rst_in,key_in,key_pulse,key_state); input clk_in;//system clock input rst_in; ...
- [学习笔记] SSD代码笔记 + EifficientNet backbone 练习
SSD代码笔记 + EifficientNet backbone 练习 ssd代码完全ok了,然后用最近性能和速度都非常牛的Eifficient Net做backbone设计了自己的TinySSD网络 ...
- 为DataGridView控件实现复选功能
实现效果: 知识运用: DataGridViewCheckBoxColumn类 实现代码: private class Fruit { public int Price { get; set; } p ...
- [BZOJ4327]:[JZOI2012]玄武密码(AC自动机)
题目传送门 题目描述: 在美丽的玄武湖畔,鸡鸣寺边,鸡笼山前,有一块富饶而秀美的土地,人们唤作进香河.相传一日,一缕紫气从天而至,只一瞬间便消失在了进香河中.老人们说,这是玄武神灵将天书藏匿在此. ...
- 01_2_Servlet简介
01_2_Servlet简介 1. Servlet简介 Servlet是服务器小应用程序 用来完成B/S架构下,客户端请求的响应处理 平台独立,性能优良,能以线程方式运行 Servlet API为Se ...
- 02_5if switch分支与循环语句
02_5if switch分支与循环语句 1.语句 1.1条件语句-根据不同条件,执行不同语句. if if ... else if ... else if if ... else if ... el ...
- JQ之$.ajax()方法以及ajax跨域请求
AJAX(Asynchronous javascript AND xml :异步javascript和xml):是一种创建交互式网页应用的网页开发技术.AJAX可以在不重新加载整个页面的情况下与服务器 ...
- 【windows】共享文件夹设置
控制面板\网络和 Internet\网络和共享中心\高级共享设置 在当前的域\公用\家庭网络 下文件和打印机共享开关打开 现在可以在 计算机-网络 里面看到共享的计算机啦 选中自己想要分享的文件,右键 ...