是找不到数据源,检查一下query

解决方案 »

  1.   

    是不是当时数据库停啦,还是怎么回事,query 是没事的。因为现在是好的。
      

  2.   

    是不是你在哪里已经把conn 给close()了。
      

  3.   

    也不是,我用的是数据库池。出这个错的时候,我看了一下日志,可用连接还有9个。也没有关conn
      

  4.   

    应该是查询的中间把这个connection(或才statement)关了吧
      

  5.   

    18.2.1 MySQL server has gone away错误本小节也涉及有关Lost connection to server during query的错误。对MySQL server has gone away错误最常见的原因是服务器超时了并且关闭了连接。缺省地,如果没有事情发生,服务器在 8个小时后关闭连接。你可在启动mysqld时通过设置wait_timeout变量改变时间限制。你可以通过执行mysqladmin version并且检验正常运行的时间来检查MySQL还没死掉。如果你有一个脚本,你只须再发出查询让客护进行一次自动的重新连接。在这种请下,你通常能获得下列错误代码(你得到的是OS相关的):CR_SERVER_GONE_ERROR 客户不能发送一个问题给服务器。 
    CR_SERVER_LOST 当写服务器时,客户没有出错,但是它没有得到对问题的一个完整的答案(或任何答案)。 如果你向服务器发送不正确的或太大的查询,你也可能得到这些错误。如果mysqld得到一个太大或不正常的包,它认为客户出错了并关闭连接。如果你需要较大的查询(例如,如果你正在处理较大的BLOB列),你可以使用-O max_allowed_packet=#选项(缺省1M)启动mysqld以增加查询限制。多余的内存按需分配,这样mysqld只有在你发出较大差询时或mysqld必须返回较大的结果行时,才使用更多的内存!
      

  6.   

    To: eureka0891
    有可能是你说的原因
    可是我现在为什么就不出现那个问题
    妈的,火大
      

  7.   

    是不是需要把wait_timeout值调大一些?
      

  8.   

    你的链接url用类似下面的方法写就可以了。关键是"autoReconnect=true"
    <parameter>
                <name>url</name>
                <value>jdbc:mysql://localhost/confluence?autoReconnect=true</value>
    </parameter>
      

  9.   

    To:jiafcat
    你这个方法可能行
    能不能把这句话再祥细解释一下
    那就太感谢啦
      

  10.   

    虽然已经结帖了,但想根据我的经验回答一下这个问题!
    mysql数据库有一个timeout变量,当一个连接在28800秒(8小时)内没有使用,
    则mysql自动断开连接,而在数据库连接池内依然保留了这个连接的对象引用,
    一般程序是没法判断这样的“坏”连接的,所以访问页面时会出现连接异常。
    判断这样的连接的唯一办法是使用select 语句检索数据库中测试内容,如果返回结果则证明
    连接是可用的!呵呵!
    相信用mysql的朋友都有可能遇到这个问题!