gpt4 book ai didi

postgresql - 臭名昭著的java.sql.SQLException:找不到合适的驱动程序

转载 作者:行者123 更新时间:2023-12-03 05:43:59 25 4
gpt4 key购买 nike

我正在尝试将已启用数据库的JSP添加到现有的Tomcat 5.5应用程序(GeoServer 2.0.0,如果有帮助的话)。

该应用程序本身与Postgres可以很好地进行通信,因此我知道数据库已启动,用户可以访问它,所有这些好东西。我正在尝试做的是添加的JSP中的数据库查询。我几乎在开箱即用的 Tomcat datasource example中使用了配置示例。必需的标记库位于正确的位置-如果我只有标记库引用,则不会发生任何错误,因此它将查找这些JAR。 postgres jdbc驱动程序postgresql-8.4.701.jdbc3.jar位于$ CATALINA_HOME / common / lib中。

这是JSP的顶部:

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/mmas">
select current_validstart as ValidTime from runoff_forecast_valid_time
</sql:query>

来自$ CATALINA_HOME / conf / server.xml的相关部分,位于 <Host>内,而 <Engine>内又是:
<Context path="/gs2" allowLinking="true">
<Resource name="jdbc/mmas" type="javax.sql.Datasource"
auth="Container" driverClassName="org.postgresql.Driver"
maxActive="100" maxIdle="30" maxWait="10000"
username="mmas" password="very_secure_yess_precious!"
url="jdbc:postgresql//localhost:5432/mmas" />
</Context>

这些行是webapps / gs2 / WEB-INF / web.xml中标签的最后一行:
<resource-ref>
<description>
The database resource for the MMAS PostGIS database
</description>
<res-ref-name>
jdbc/mmas
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>

最后,异常(exception):
   exception
org.apache.jasper.JasperException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver"
[...wads of ensuing goo elided]

最佳答案

The infamous java.sql.SQLException: No suitable driver found



此异常基本上可以具有 两个原因:

1. JDBC驱动程序未加载

您需要确保将JDBC驱动程序放置在服务器自己的 /lib文件夹中。

或者,当您实际上不使用服务器管理的连接池数据源,而是在WAR中手动摆弄 DriverManager#getConnection()时,则需要将JDBC驱动程序放在WAR的 /WEB-INF/lib中并执行..
Class.forName("com.example.jdbc.Driver");

..在第一个 DriverManager#getConnection()调用之前的代码中,请确保您执行 而不是吞咽/忽略可能被其抛出的 ClassNotFoundException,并继续执行代码流,就好像没有发生任何异常情况一样。另请参阅 Where do I have to place the JDBC driver for Tomcat's connection pool?

2.或者,JDBC URL的语法错误

您需要确保JDBC URL符合JDBC驱动程序文档,并记住它通常区分大小写。当JDBC URL对于任何已加载的驱动程序都没有为 true 返回 Driver#acceptsURL()时,您也将确切地获得此异常。

的情况下,PostgreSQL 被记录为 here

With JDBC, a database is represented by a URL (Uniform Resource Locator). With PostgreSQL™, this takes one of the following forms:

  • jdbc:postgresql:database
  • jdbc:postgresql://host/database
  • jdbc:postgresql://host:port/database


的情况下,MySQL 被记录为 here

The general format for a JDBC URL for connecting to a MySQL server is as follows, with items in square brackets ([ ]) being optional:

jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] »
[?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]



的情况下,Oracle 被记录为 here

There are 2 URL syntax, old syntax which will only work with SID and the new one with Oracle service name.

Old syntax jdbc:oracle:thin:@[HOST][:PORT]:SID

New syntax jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE



也可以看看:
  • Where do I have to place the JDBC driver for Tomcat's connection pool?
  • How to install JDBC driver in Eclipse web project without facing java.lang.ClassNotFoundexception
  • How should I connect to JDBC database / datasource in a servlet based application?
  • What is the difference between "Class.forName()" and "Class.forName().newInstance()"?
  • Connect Java to a MySQL database
  • 关于postgresql - 臭名昭著的java.sql.SQLException:找不到合适的驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51076896/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com