日期:2014-05-17  浏览次数:21026 次

cannot open connection
MyEclipse+sping+hibernate+struts做了个注册页面,测试时一注册tomcat就提示下面的错误


org.hibernate.exception.GenericJDBCException: Cannot open connection 
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103) 
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29) 

连接数据库是在tomcat的server.xml中配置的,内容如下:
  <Context path="/register" docBase="D:\workspace\TEST\WebRoot"
debug="5" reloadable="true" crossContext="true">
 
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_MysqlTest_log." suffix=".txt"
timestamp="true"/>
 
<Resource name="jdbc/mytest" auth="Container" type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/mytest">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/mytest</value>
</parameter>
</ResourceParams>
</Context>
application.xml下修改的内容为:

<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/mytest</value>
</property>
</bean>
各位大侠看看错误出在哪里?多谢。

------解决方案--------------------
出现这个错误可能是一下原因:

1:Mysql数据库没有打开(没有启动Mysql 启动的方法:net start mysql)
2:在项目中配置与数据库连接Mysql的时填写的Mysql用户名或密码不正确(使用的是Mysql的用户名密码和Mysql的端口号 一般mysql默认的用户名是:root 密码是你自己安装时候填写的,端口号默认的是3306)
3:项目中没有把mysql驱动架包添加进去?
4:以上步骤配置都是正确的时候,请你重新加载项目启动容器

------解决方案--------------------
对了,你数据源那块写的是系统自动生成的吗?
我看怎么像是JNDI(java命名接口)
这种方式是在tomcat下的servlet。xml配置一个数据源 名字是jndiName

在哪里的配置中要写上url 

你不觉得你这里连个3306的端口号都没有吗?

你在tomcat的 conf下 的那个xml文件中,配置一个数据源试试,
你以前用过jndi吧,就是那么配的