How to fix: No suitable driver found for jdbc:mysql://localhost/dbname error when using pools?
Try putting the driver jar in the server lib folder. ($CATALINA_HOME/lib)
I believe that the connection pool needs to be set up even before the application is instantiated. (At least that's how it works in Jboss)
No suitable driver found for 'jdbc:mysql://localhost:3306/mysql
In this particular case (assuming that the Class#forName()
didn't throw an exception; your code is namely continuing with running instead of throwing the exception), this SQLException
means that Driver#acceptsURL()
has returned false
for any of the loaded drivers.
And indeed, your JDBC URL is wrong:
String url = "'jdbc:mysql://localhost:3306/mysql";
Remove the singlequote:
String url = "jdbc:mysql://localhost:3306/mysql";
See also:
- Mini tutorial on MySQL + JDBC connectivity
No suitable driver found for jdbc:mysql/localhost:3306/world
Syntax for MySQL JDBC URL is:
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]...]
Here is a simple example for a connection URL:
jdbc:mysql://localhost:3306/sakila?profileSQL=true
Your URL jdbc:mysql/localhost:3306/world
is missing a :/
after mysql
.
Port number defaults to 3306
, so your URL should be:
jdbc:mysql://localhost/world
No suitable driver found for jdbc:mysql://localhost:3306/rom (Payara 5, Windows 10)
Looks like I'm able to answer my own question. I asked the exact same question on the Payara Forum and was recommended to define a data source instead of using the driver directly (@Chris pointed in this direction as well). A data source is likely the best way to go anyway but I wanted to avoid the complexity and use the simplest setup .. which clearly didn't work.
For reference, you can find the working setup below:
In Payara 5, goto JDBC > JDBC Connection Pools > New: enter a pool name, select
javax.sql.DataSource
as resource type, and MySql as vendor. On step 2,com.mysql.jdbc.jdbc2.optional.MysqlDataSource
should be preselected for Datasource Classname. Fill out the Username and Password (e.g., root, changeit) properties under the Additional Properties header. Select finish. On the page for the newly created connection pool, select PING to make sure it was setup correctly.In your
persistence.xml
file, make sure the persistence-unit element starts as follows:
<persistence-unit name="ROM" transaction-type="JTA">
<jta-data-source>java:global/<connection pool name></jta-data-source>
- Create a
web.xml
file (this may also be done using Java Annotations):
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<data-source>
<name>java:global/<connection pool name></name>
<class-name>com.mysql.jdbc.jdbc2.optional.MysqlDataSource</class-name>
<server-name>[host name, e.g., localhost]</server-name>
<port-number>3306</port-number>
<database-name>[db name]</database-name>
<user>[username, e.g., root]</user>
<password>[password]</password>
</data-source>
</web-app>
This configuration worked for me at least. Hoping this will help someone else down the road. Note that there are various useful settings for a connection pool - see e.g., here for more options.
Related Topics
Jackson JSON Custom Serialization for Certain Fields
Java: How to Split a String by a Number of Characters
Why Does My Aes Encryption Throws an Invalidkeyexception
Java 8 Chained Method Reference
Java Try-Finally Return Design Question
How Does System.Out.Print() Work
How to Pass a Value from One Jsp to Another Jsp Page
How to Get the Array Class for a Given Class in Java
How to Attach Source or Javadoc in Eclipse for Any Jar File E.G. Javafx
How to Set Eclipse Console Locale/Language
Jackson Dynamic Property Names
Eclipse Error ... Cannot Be Resolved to a Type