1、报错:
2、分析原因:
先是在网上找了很多解决方案,然后一一去尝试,结果尝试了很多都不行(没有找到问题最根本的原因),以下是我尝试过程中试过的方案(有些也是自己分析出来可能出现的原因去尝试的方案):
网上看到的一些可能原因:
- 驱动配置有误:driver=com.mysql.jdbc.Driver
- 数据库连接地址有误:url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8(xml配置中&要写成&)密码或帐号有误:username=root, password=root(用户名密码这里不要多了空格)
- 数据库未启动或无权访问
- 项目未引入对应的驱动jar包mysql-connector-java-5.1.6-bin.jar
- mysql root没有远程访问的权限,需要增加权限,增加权限的步骤如下:进入mysql数据库:(登录:mysql -u root -p;)grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;flush privileges;
- 可能少导了一个包mchange-commons-Java.jar
- 请注意自己的xml文件最好不要有空格,还有就是X.properties不能有空格
- 可能会时连接池的原因,换其他连接方式
P空间:
xmlns:p="http://www.springframework.org/schema/p"
<!-- 使用XML Schema的p名称空间配置 -->
<bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/web28_shop"
p:username="root"
p:password="sa"/>
<!-- 采用property的普通配置 相比之下有点麻烦,但是效果是一样的哦,-->
<bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/web28_shop" />
<property name="url" value="jdbc:mysql://网络IP:3306/web28_shop" />
<property name="username" value="XXUsername" />
<property name="password" value="password" />
</bean>
自己分析的一些原因:
- 做了一个小demo,用原生jdbc写的获取数据库连接能够获取到,而框架中使用时获取不到。想一想有可能是框架在不同平台上的写法不同。又尝试将小demo在本地连接Linux上的数据库,尝试可以连接成功。
为了排除是否是因为不同数据库的原因导致的,就尝试用本地的demo去连接Linux上的用框架不能获取连接的数据库。测试能够连接成功。
说明使用该框架后不管是在本地还是Linux上都不能连接到Linux上的用框架不能获取连接的数据库。确定了是框架创建连接时使用不当的原因。
3、解决问题:
针对上面的分析有可能是数据库驱动与框架版本不兼容的原因,更换一下驱动试试看。
将驱动包换成mysql-connector-java-5.0.8-bin.jar之后就可以连接远程数据库了。在Linux端也能够正常连接了。大功告成!!!
分析过程:当时是在本地写了个demo,先测试在Linux上能不能连接到Linux上的数据库,测试ok之后,就尝试在本地远程连接Linux上的数据库,发现也可以,之后在出问题的地方测试能否连接到,结果连接不到,百度上说可能是驱动包的原因,换了一个驱动包之后就解决问题了。