Mysqlに接続しようとすると、常に次のエラーが発生します。
Java.sql.SQLException:ローカルホストテストに適したドライバーが見つかりません
アプリのmysql-connector.jar
に/WEB-INF/lib
を既に含めました。それを機能させるには、他に何を構成する必要がありますか? web.xml
に何かを追加する必要がありますか?私はappengineを使用していません。
サーバー内の私のコードは次のとおりです。
package com.mysql.server;
import Java.sql.Connection;
import Java.sql.DriverManager;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.mysql.client.ConnDb;
public class ConnDbImpl extends RemoteServiceServlet implements ConnDb {
public Connection con;
@Override
public String tryConn() {
try{
String Host = "localhost";
String db = "test";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "pwd";
Class.forName(driver).newInstance();
con = DriverManager.getConnection(Host+db, user, pass);
return "Connected to Database";
} catch(Exception ex) {
return ex.toString();
}
}
}
Driver#acceptsURL()
メソッドに従って、ロードされたJDBCドライバーのいずれにもJDBC URLが受け入れられない場合、この例外が発生します。実際には、JDBCドライバー固有のURIプレフィックスを忘れました。 MySQL JDBCドライバーの場合、これはjdbc:mysql://
です。完全な接続URLは次のようになります。
con = DriverManager.getConnection("jdbc:mysql://localhost/test", user, pass);
このエラーメッセージの別の原因を見つけました。私の場合、ユーザーはデータベースに対する特権を持っていませんでした。選択したテーブルに移動します。親愛なるドライバー開発者、なぜあなたはそのような誤解を招くエラーメッセージを使うのですか?多くの人がこれに本当に問題を抱えています。
私にとっては、プロジェクトライブラリにMySQLJDBCドライバーを含めるのを忘れていました。 DOH!
これはそのエラーを与えていました:
_Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/lib_db","root","root");
_
しかし、私がそれを次のように変更したとき:
Connection connection =DriverManager.getConnection("jdbc:mysql://localhost/db_name?"+"user=root&password=root");
エラーがなくなった