sql >> Databasteknik >  >> RDS >> PostgreSQL

Den ökända java.sql.SQLException:Ingen lämplig drivrutin hittades

Den ökända java.sql.SQLException:Ingen lämplig drivrutin hittades

Detta undantag kan ha i princip två orsakar:

#1. JDBC-drivrutinen är inte laddad

Du måste se till att JDBC-drivrutinen är placerad i serverns egen /lib mapp.

Eller, när du faktiskt inte använder en serverhanterad datakälla för anslutningspool, utan pysslar manuellt med DriverManager#getConnection() i WAR måste du placera JDBC-drivrutinen i WAR:s /WEB-INF/lib och utför ..

Class.forName("com.example.jdbc.Driver");

.. i din kod före den första DriverManager#getConnection() samtal där du ser till att du inte gör det svälja/ignorera någon ClassNotFoundException som kan kastas av den och fortsätta kodflödet som om inget exceptionellt hände. Se även Var måste jag placera JDBC-drivrutinen för Tomcats anslutningspool?

#2. Eller så har JDBC URL i fel syntax

Du måste se till att JDBC-URL:n överensstämmer med JDBC-drivrutinens dokumentation och kom ihåg att den vanligtvis är skiftlägeskänslig. När JDBC URL inte returnerar true för Driver#acceptsURL() för någon av de laddade drivrutinerna får du också exakt detta undantag.

Vid PostgreSQL det finns dokumenterat här.

Med JDBC representeras en databas av en URL (Uniform Resource Locator). Med PostgreSQL™ tar detta en av följande former:

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

I fallet med MySQL det finns dokumenterat här.

Det allmänna formatet för en JDBC-URL för att ansluta till en MySQL-server är följande, med objekt inom hakparenteser ([ ] ) är valfritt:

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

I fallet med Oracle det finns dokumenterat här.

Det finns två URL-syntaxer, gammal syntax som bara fungerar med SID och den nya med Oracle-tjänstens namn.

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

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

###Se även:

  • Var måste jag placera JDBC-drivrutinen för Tomcats anslutningspool?
  • Hur man installerar JDBC-drivrutinen i Eclipse webbprojekt utan att behöva möta java.lang.ClassNotFoundexception
  • Hur ska jag ansluta till JDBC-databas/datakälla i en servletbaserad applikation?
  • Vad är skillnaden mellan "Class.forName()" och "Class.forName().newInstance()"?
  • Anslut Java till en MySQL-databas


  1. PostgreSQL 9.1:Hur man sammanfogar rader i array utan dubbletter, GÅ MED i en annan tabell

  2. Exempelscheman på GitHub

  3. Använd MySQL relationsdatabaser på Fedora 14

  4. Hur man sammanfogar flera rader i en kolumn i MySQL