现在服务器A(CentOS5),java连mysql是采用spring代理连接的mysql5.1,连接正常.
我现在将原来配置文件,jar,全部抄到服务器B(Linux ASE4),升级了mysql5.1到mysql5.5
,修改了my.cnf文件,bind-address=127.0.0.1,只允许本地访问,启动mysqld服务,正常,测试连接到client端执行SQL正常,用PHP连接mysql执行SQL正常,但java总报错,
如果分不够,我还可以继续加,这个问题,我都不知道该用什么方法解决了,谢谢了。
下面是部分的配置文件和错误消息?
配置文件:
<beans default-autowire="autodetect">
         <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
         <property name="driverClassName">
           <value>com.mysql.jdbc.Driver</value>
         </property>
         <property name="url">
           <value>jdbc:mysql://127.0.0.1:3306/********?useUnicode=true&amp;c
haracterEncoding=utf-8</value>
         </property>
         <property name="username">
          <value>********</value>
         </property>
         <property name="password">
           <value>××××××××</value>
         </property>
     </bean>错误消息:
Exception in thread "main" org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:576)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:640)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:669)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:685)
        at com.tools.business.search.SearchUpdDS.inGetMemcache(SearchUpdDS.java:480)
        at com.tools.business.search.SearchUpdDS.getMemcache(SearchUpdDS.java:85)
        at com.tools.business.search.SearchUpdServiceImpl.getMemcache(SearchUpdServiceImpl.java:63)

解决方案 »

  1.   

    介个可能是缺少包把,commons-dbcp.jar commons-pool.jar mysql-connector.jar
      

  2.   

    包应该都有的,我把WEB-INF/lib下的包全部抄过去了,而且在/etc/profile下设置了lib路径下的包,AS4下/etc/profile文件设置的内容和CentOS下一样。我不确定是否还有其他地方要拷贝mysql相关jar到其它目录,或者设置其它的配置文件,因为时间有点久,当时配置的我又不太记得了。
      

  3.   

    你是指Linux下的防火墙?这个3306的端口针对localhost是开的。netstat -an|grep 3306可以看到下面
    tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN
      

  4.   

    url中的 ?useUnicode=true&amp;characterEncoding=utf-8 去掉试试
      

  5.   

    但有个问题,我之前也怀疑3306端口有问题,但我测试过PHP后,也是采用的3306端口连接,执行php程序读SQL是没有问题的。所以,我认为,JAR的配置可能性要大些,除了这些配置,还要什么配置的吗?
      

  6.   

    我有过和你一样的错误提示,去掉url后边的就跑起来了,编码数据库和页面都设置的一样的
      

  7.   

    按你的建议,去掉过?useUnicode=true&amp;characterEncoding=utf-8 不过,还是提示连接不上,5555
      

  8.   

    在MySQL的mysql库中的user表里创建一个记录给你的本地连接用户http://www.phpfans.net/ask/discuss1/65683211.htmlhttp://imysql.cn/docs/MySQL_51_zh/mysql_51.html
      

  9.   

    这个是我的用户
    mysql> select host, user from user;
    +-----------+------+
    | host      | user |
    +-----------+------+
    | localhost | root |
    +-----------+------+
    spring中的xml文件密码即是root用户的密码。
      

  10.   


    看我给你发的那个连接 你还需要创建一个用户他的host是% 这样的话 其他机器才能访问
      

  11.   

    或者直接把你现在的用户的host改成 %
      

  12.   

    我不想其它外部机器访问,测试是在服务器上AS4做的,并没有通过远程连接AS4,是做的localhost本地连接。
      

  13.   

    ....先看看行还是不行
    或者换
    localhost看看
      

  14.   

    我又分别插入了2条记录到user表,SQL
    INSERT INTO user (Host,User,Password)   VALUES('%','root',PASSWORD('********'));
    INSERT INTO user (Host,User,Password)   VALUES('127.0.0.1','root',PASSWORD('********'));
    然后再执行,还是不能连接Mysql
      

  15.   

    这是我在网上查到的一个解决方案,希望对你有用
    http://blog.csdn.net/jebe7282/archive/2010/06/01/5639778.aspx
      

  16.   

    +-----------+------+
    | host      | user |
    +-----------+------+
    | %         | root |
    | 127.0.0.1 | root |
    | localhost | root |
    +-----------+------+
      

  17.   


    后两个用户的密码跟第一个用户一样么? 如果不知道是否一样的先把所有用户的密码去掉看看呢?..话说我用Ubuntu 一次成功 没LZ您这么坎坷阿。。
      

  18.   


    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
    default-autowire="byName" default-lazy-init="false"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/example?useUnicode=true&amp;characterEncoding=utf8" />
    <property name="username" value="root" />
    <property name="password" value="1234" />
    </bean>
    <bean id="sessionFactory" name="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan">
    <list>
    <value>com.web.lv9.java.**.entity</value>
    </list>
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.MySQLDialect
    </prop>
    <prop key="hibernate.c3p0.max_size">20</prop>
    <prop key="hibernate.c3p0.min_size">5</prop>
    <prop key="hibernate.c3p0.idle_test_period 3000">2000</prop>
    <prop key="hibernate.c3p0.acquire_increment">1</prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.c3p0.validate">true</prop>
    </props>
    </property>
    </bean>
    <bean id="baseDAO" name="baseDAO" class="com.web.lv9.java.common.dao.BaseDAO"
    init-method="init" abstract="true">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    </beans>
      

  19.   

    楼上,你当时在Ubuntu上配置,还赔了其它的文件没,除了xml,毕竟我在CentOS下是完全正常的,而且WEB-INF/classes下的文件全部原本抄过去AS4的。
      

  20.   


    真没配置什么文件 我要是心情好的话几句话就能把我对MYSQL干的事情全都跟你说完。。
      

  21.   

    我还配置了/etc/profile设置环境变量,同时我是用shell来调用java程序运行,所以在shell中还要在运行时import一些jar.
    CentOS我是1年半前配的环境,mysql,memcache,TC,webserver,php,cgi,perl这些服务,过了好久,真不记得对于jdbc连接mysql还搞了什么环境参数,唉,一直报连接错。
      

  22.   

    你说的总报错不是连接不上的意思把?http://topic.csdn.net/u/20101004/22/11dd52ca-d145-4939-baa6-bf030600d7c5.html
      

  23.   

    是呀,连接不上MYSQL,那个帖子看了,我有my.cnf这个文件,是现在mysql启动的配置文件,但我不太明白楼上说的那个帖子中提到的复制一个my.cnf?可以解释下吗?
      

  24.   

    额,等帖子的同时,也一直在用Google找呢
      

  25.   

    tcp        0      1 ::ffff:127.0.0.1:33361      ::ffff:127.0.0.1:3306       SYN_SENT
    怎么我程序连接上3306的端口,状态一直是SYN_SENT,而不是ESTABLISHED 呢???
      

  26.   

    请问BearKin,你配置正常的jdbc for mysql的mysql版本号是什么,jdbc的jar版本号是什么呀?