sql >> Databáze >  >> RDS >> PostgreSQL

Nechvalně známá výjimka java.sql.SQL:Nebyl nalezen žádný vhodný ovladač

Neslavná výjimka java.sql.SQL:Nebyl nalezen žádný vhodný ovladač

Tato výjimka může mít v zásadě dvě příčiny:

#1. Ovladač JDBC není načten

Musíte zajistit, aby byl ovladač JDBC umístěn ve vlastním serveru /lib složka.

Nebo když ve skutečnosti nepoužíváte zdroj dat fondu připojení spravovaný serverem, ale ručně si pohráváte s DriverManager#getConnection() ve WAR, pak musíte umístit ovladač JDBC do /WEB-INF/lib WAR a provést ..

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

.. ve vašem kódu před první DriverManager#getConnection() zavolejte, čímž se ujistíte, že ne spolknout/ignorovat všechny ClassNotFoundException kterou lze hodit a pokračovat v toku kódu, jako by se nic výjimečného nestalo. Viz také Kam musím umístit ovladač JDBC pro fond připojení Tomcat?

#2. Nebo JDBC URL má nesprávnou syntaxi

Musíte se ujistit, že adresa URL JDBC odpovídá dokumentaci ovladače JDBC a mít na paměti, že se obvykle rozlišují velká a malá písmena. Když adresa URL JDBC nevrátí true pro Driver#acceptsURL() pro kterýkoli z načtených ovladačů získáte také přesně tuto výjimku.

V případě PostgreSQL je to zdokumentováno zde.

S JDBC je databáze reprezentována URL (Uniform Resource Locator). S PostgreSQL™ to má jednu z následujících forem:

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

V případě MySQL je to zdokumentováno zde.

Obecný formát JDBC URL pro připojení k serveru MySQL je následující, s položkami v hranatých závorkách ([ ] ) je nepovinné:

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

V případě Oracle je to zdokumentováno zde.

Existují 2 syntaxe URL, stará syntaxe, která bude fungovat pouze s SID, a nová s názvem služby Oracle.

Stará syntaxe jdbc:oracle:thin:@[HOST][:PORT]:SID

Nová syntaxe jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

###Viz také:

  • Kam musím umístit ovladač JDBC pro fond připojení Tomcat?
  • Jak nainstalovat ovladač JDBC do webového projektu Eclipse bez použití java.lang.ClassNotFoundexception
  • Jak se mám připojit k databázi/zdroji dat JDBC v aplikaci založené na servletech?
  • Jaký je rozdíl mezi „Class.forName()“ a „Class.forName().newInstance()“?
  • Připojte Javu k databázi MySQL


  1. Jak AKTUALIZOVAT jeden sloupec pomocí jiného sloupce v jiné tabulce? Chyba SQL:ORA-00933:Příkaz SQL nebyl správně ukončen

  2. Je jedinečný klíč SQL Server také index?

  3. Vyslovuje se „S-Q-L“ nebo „Pokračování“?

  4. Řešení problémů s replikací z databázových klastrů bez GTID do GTID MariaDB