【问题标题】:Troubleshooting MySQL jdbc database connector errorMySQL jdbc 数据库连接器错误故障排除
【发布时间】:2016-06-18 23:36:00
【问题描述】:

需要帮助解决 MySQL 数据库连接问题。首先,当我在我的开发工作站上运行我的 Java Web 应用程序时,我可以成功连接到我的远程/托管 MySQL 数据库。

当我将 Java Web 应用程序部署到我的托管 Web 服务器时,我收到以下错误 org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

我的 mysql-connector-java-5.1.38.bin.jar 位于我的应用程序的 WEB-INF/libraries 文件夹中。正如我之前所说,当我在本地开发机器上运行我的 Web 应用程序时,这似乎工作正常,但在部署到我的 Web 主机时失败。

Tomcat v7.x 正在我的开发工作站上运行,而我的 Web 主机也在使用 Tomcat v7.x。我的开发工作站是基于 Windows 的。我相信网络主机正在运行 CentOS7.x。

另一个令人困惑的部分是我的 Web 应用程序与我以前写的 Web 主机一起工作。

我怎样才能解决这个问题?

2016 年 3 月 9 日编辑

Context.xml:

<Resource
    name="jdbc/dbname_ccp"
    auth="Container"
    type="javax.sql.DataSource"
    maxActive="100"
    maxIdle="30"
    maxWait="10000"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://domain.com:3306/dbname_ccp"
    username="username_admin"
    password="dbname_password"
    validationQuery="select 1"
/>

web.xml

<resource-ref>
    <description>MySQL Datasource</description>
    <res-ref-name>jdbc/dbname_ccp</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

我相信我有正确的用户名、密码和数据库名称,因为当我从我的开发工作站运行我的 Java Web 应用程序时,同样的连接信息有效。部署到托管 Web 服务器时,我收到以下错误:

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    at utilities.DBConnection.getConnectionMySQL(DBConnection.java:33)
    at model.account.UserAccountDAO.Register(UserAccountDAO.java:286)
    at model.account.ProcessUserAccount.register(ProcessUserAccount.java:237)
    at controller.AccountServlet.performTask(AccountServlet.java:50)
    at controller.AccountServlet.doPost(AccountServlet.java:76)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
    Caused by: java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:278)
    at  org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
    ... 24 more

我尝试在我的项目应用程序 WEB-INF/lib 文件夹以及 tomcat /lib 文件夹中包含 mysql-connector-java-5.1.38-bin.jar 文件。我将 jar 放在哪里似乎并不重要,服务器部署总是失败并出现上面列出的错误。

我怎样才能解决这个问题?还有其他 MySQL 连接选项吗?

【问题讨论】:

  • 还有其他人有任何进一步的故障排除想法吗?我仍然无法从 Web 主机的服务器运行我的 Java Web 应用程序。谢谢,戴夫

标签: java mysql jdbc centos tomcat7


【解决方案1】:

我之前也遇到过这个问题,我的解决方法是将mysql-connector-java-5.1.38.bin.jar 添加到tomcat/common/lib 而不是web app图书馆并解决了它。

【讨论】:

  • 我尝试在 Tomcat 服务器上的多个文件夹(包括 lib 文件夹)中找到 mysql-connector-java-5.1.38.bin.jar,但无济于事。他们都导致了同样的错误。
  • 1.可以查看数据库1433端口是否打开。
  • 2.检查/lib文件夹中有关msbase.jar、mssqlserver.jar、msutil.jar
  • 无法真正控制数据库。另外,当我从本地工作站运行它时它可以工作。 msbase.jar、mssqlserver.jar、msutil.jar 与这个问题有什么关系。这些似乎与 Microsoft SQL Server 而非 MySQL 有关。
猜你喜欢
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多