孙卫琴的Tomcat与Java Web开发技术详解中的MySQL+JavaBean+JSP的bookstore例子在连接数据库出错。
在两年以前我完全用书中的MySQL数据库和驱动做成了书中的例子,并且运行成功。
但是时隔至今,我想重新把那东西拿出来跑一上,再以此继续学习SSH开发,没想折腾了二三天了,始终无法成功!
每次连接到需要查询数据库的界面时,就报以下的错:
(注:我已经在网上查过,有人说是数据库驱动不与MySQL版本不符合引起的,我的MySQL在下载下来显示是5.0.45的,我在安装时显示是MySQL server 5.0,我下载了mysql-connector-java-5.0.6驱动,也下载过mysql-connector-java-5.1.7驱动,但都是报同样的错。还有人说运行一下这个mysql> SET PASSWORD FOR 'coldfusion'@'localhost' = OLD_PASSWORD('newpwd'); 就可以了,可是我都试过了,都没能解决问题。
连接数据库代码(我用JUnit测试这个构造方法,直接就没有过):
public class BookDB {
private String dbUrl =  "jdbc:mysql://localhost:3306/BookDB";
  private String dbUser="root";
  private String dbPwd="1";
  public BookDB () throws Exception{
    Class.forName("com.mysql.jdbc.Driver");
  }

builder.xml中是这样的,都是照书中弄的:
<property name="servletpath"  value="${myenv.CATALINA_HOME}/common/lib/servlet-api.jar" />
<property name="mysqlpath" value="WEB-INF/lib/mysqldriver.jar" />
连接数据库驱动路径是\WEB-INF\lib下的mysqldriver.jar
我是真没办法了,求各位高手帮助解决,谢谢了!服务器端发生错误:Communication link failure: java.io.IOException, underlying cause: Unexpected end of input stream ** BEGIN NESTED EXCEPTION ** java.io.IOException MESSAGE: Unexpected end of input stream STACKTRACE: java.io.IOException: Unexpected end of input stream at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:1096) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:626) at com.mysql.jdbc.Connection.createNewIO(Connection.java:1562) at com.mysql.jdbc.Connection.(Connection.java:491) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:346) at java.sql.DriverManager.getConnection(DriverManager.java:525) at java.sql.DriverManager.getConnection(DriverManager.java:171) at mypack.BookDB.getConnection(Unknown Source) at mypack.BookDB.getBookDetails(Unknown Source) at org.apache.jsp.bookdetails_jsp._jspService(org.apache.jsp.bookdetails_jsp:144) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) ** END NESTED EXCEPTION ** 错误原因为:java.sql.SQLException: Communication link failure: java.io.IOException, underlying cause: Unexpected end of input stream ** BEGIN NESTED EXCEPTION ** (由于贴子长度限制,以下异常省略)

解决方案 »

  1.   

    嗯,我也试着自己弄过,在网上查过,有人说是数据库驱动不与MySQL版本不符合引起的,我的MySQL在下载下来显示是5.0.45的,我在安装时显示是MySQL server 5.0,我下载了mysql-connector-java-5.0.6驱动,也下载过mysql-connector-java-5.1.7驱动,但都是报同样的错。还有人说运行一下这个mysql> SET PASSWORD FOR 'coldfusion'@'localhost' = OLD_PASSWORD('newpwd'); 就可以了,可是我都试过了,都没能解决问题。 
    连接数据库代码(我用JUnit测试这个构造方法,直接就没有过): 
    public class BookDB { 
    private String dbUrl =  "jdbc:mysql://localhost:3306/BookDB"; 
      private String dbUser="root"; 
      private String dbPwd="1"; 
      public BookDB () throws Exception{ 
        Class.forName("com.mysql.jdbc.Driver"); 
      } 
    } 
    builder.xml中是这样的: 
    <property name="servletpath"  value="${myenv.CATALINA_HOME}/common/lib/servlet-api.jar" /> 
    <property name="mysqlpath" value="WEB-INF/lib/mysqldriver.jar" /> 
    连接数据库驱动路径是\WEB-INF\lib下的mysqldriver.jar tomcat启动后,网站发布成功,可以访问,但只要一连接到访问数据库的页面就抛上面所说的错了