这是关于jdbc的mysql驱动程序的另一个问题。考虑到我用谷歌搜索时得到的搜索结果的数量,我很沮丧,因为我发现它们对我有用。
错误:
hostname# java -cp /usr/share/java/mysql-connector.jar:/home/user JDBCTest
java.sql.SQLException: No suitable driver found for jdbc:mysql://<db ip>:3306/dbname
at java.sql.DriverManager.getConnection(DriverManager.java:596)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at JDBCTest.main(sqltest.java:14)
代码(从短文中拉出来):
import java.sql.Connection;
import java.sql.DriverManager;
class JDBCTest {
private static final String url = "jdbc:mysql://dbipaddress:3306/dbname";
private static final String user = "username";
private static final String password = "password";
public static void main(String args[]) {
try {
Connection con = DriverManager.getConnection(url, user, password);
System.out.println("Success");
} catch (Exception e) {
e.printStackTrace();
}
}
}
我90%肯定/usr/share/java/mysql-connector-java.jar是该类的正确路径。这就是我在网上发现并使用locate。
我已尝试在/ etc / environment中将环境类路径设置为CLASSPATH=$CLASSPATH:/usr/share/java/mysql-connector-java.jar
。如您所见,我也尝试过-cp标志。
我可以使用命令行mysql-client使用JDBCTest类中的凭据连接到mysql服务器和数据库。所以这不是db服务器或我的用户/密码的错误。
据我所知,我的jdbc网址是正确的。这是我在搜索时遇到的一个比较常见的问题......
我在服务器上使用Ubuntu 12.04 64位。
安装了libmysql-java。就像是,openjdk-7-jre-headless。
我在Tomcat之外完全运行它,因此所有将驱动程序复制到Tomcat目录中的答案都不适用。
所以,我很难过。我认为使用-cp标志只会强制它工作。我的java安装中有什么东西丢失了吗?什么东西被openjdk-7-jre无头?
我该如何解决这个问题?
注意:此类只是一个快速测试,可帮助我诊断为什么较大的(专有)应用程序无法连接到我的数据库。较大的应用程序会抛出相同的错误。我希望修复这个小课程将修复更大的应用程序。
答案 0 :(得分:3)
您可能正在使用不符合JDBC 4的MySQL JDBC驱动程序版本,因此DriverManager
不会自动加载它。在这种情况下,您需要使用以下方法显式加载它:
Class.forName("com.mysql.jdbc.Driver");
另一种选择是使用符合JDBC 4的库版本,并自动加载。
答案 1 :(得分:1)
尝试在主方法的第一行添加以下内容:
Class.forName("com.mysql.jdbc.Driver");
如果它抛出异常,则JVM无法访问/usr/share/java/mysql-connector.jar
。如果是这种情况,请使用以下方法检查文件权限:
ls -lah /usr/share/java/mysql-connector.jar
您应该至少具有对此文件的读取权限,显然文件应该存在。