需要帮助解决 MySQL 数据库连接问题。首先,当我在开发工作站上运行 Java Web 应用程序时,我可以成功连接到远程/托管 MySQL 数据库。
当我将 Java Web 应用程序部署到托管 Web 服务器时,出现以下错误 org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
我的应用程序中的 WEB-INF/libraries 文件夹中有 mysql-connector-java-5.1.38.bin.jar。正如我之前所说,当我在本地开发计算机上运行 Web 应用程序时,这似乎工作正常,但在部署到我的 Web 主机时会失败。
Tomcat v7.x 正在我的开发工作站上运行,我的 Web 主机也使用 Tomcat v7.x。我的开发工作站是基于 Windows 的。我相信虚拟主机正在运行 CentOS7.x。
另一个令人困惑的部分是我的网络应用程序与我之前编写的网络主机一起使用。
如何解决这个问题?
编辑 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
我尝试将 mysql-connector-java-5.1.38-bin.jar 文件包含在我的项目应用程序 WEB-INF/lib 文件夹以及 tomcat/lib 文件夹中。我将 jar 放在哪里似乎并不重要,服务器部署总是失败并出现上面列出的错误。
如何解决这个问题?还有其他 MySQL 连接选项吗?
最佳答案
我以前遇到过这个问题,我的解决方案是将 mysql-connector-java-5.1.38.bin.jar 添加到 tomcat/common/lib 而不是 web 应用程序中库并解决了它。
关于java - MySQL jdbc 数据库连接器错误故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35809520/