java.sql.SQLException:无法创建PoolableConnectionFactory(需要CLIENT_PLUGIN_AUTH)

时间:2016-09-27 13:59:16

标签: java mysql

我正在使用Tomcat版本8和MySQL连接器版本6.这是我的context.xml:

<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

<Resource auth="Container" 
            driverClassName="com.mysql.cj.jdbc.Driver"
             maxActive="20" 
             maxIdle="10" 
             maxWait="-1" 
             name="jdbc/MyConn" 
             username="root"
             password="mypassword" 
             type="javax.sql.DataSource" 
             url="jdbc:mysql://localhost:3306/training_db" 
             />

这是我用于数据库连接的类。

public class DBConnection {

public static Connection getConnection() throws Exception{
    Context initContext = new InitialContext();
    Context envContext  = (Context)initContext.lookup("java:/comp/env");
    DataSource ds = (DataSource)envContext.lookup("jdbc/MyConn");
    Connection conn = ds.getConnection();
    System.out.println("dbConLookp():: Data Source Connection is called."+ds.getLogWriter());
    return conn;
}

}

这是我连接数据库和插入的方法。

try{


    DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());

    Connection con = DBConnection.getConnection();
    PreparedStatement st = con.prepareStatement("INSERT INTO EMPLOYEE (ID,FIRSTNAME,LASTNAME,MIDDLENAME,PHONENUMBER,EMAILID,ADDRESS,USERPASS) VALUES (?,?,?,?,?,?,?)");
    st.setInt(1, Integer.parseInt(request.getParameter("id")));
    st.setString(2, firstName);
    st.setString(3, lastName);
    st.setString(4, middleName);
    st.setString(5, phoneNumber);
    st.setString(6, emailId);
    st.setString(7, address);
    st.setString(8, password);

    boolean rs = st.execute();
    if (!rs) {
        System.out.println("Record "+request.getParameter("id")+" is inserted successfully.");
    } else {
        System.out.println("Record is insertion is failed.");
    }
    st.close();
    con.close();
    }
    catch(Exception e){
        System.out.println("Exception caught:" + e);
    }

在Register页面上,当我单击register时,我得到java.sql.SQLException:无法创建PoolableConnectionFactory(需要CLIENT_PLUGIN_AUTH)异常。我尝试将localhost更改为127.0.0.1但它没有工作。我还检查了MySQL权限,看起来很好。我尝试创建一个不同的用户,但它也没有用。我尝试在WEB-INF文件夹中创建另一个context.xml,但没有运气。我不知道我还能做些什么。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果有人遇到同样的问题,我记得我将MySQL Connector JAR复制到Tomcat的lib文件夹中,正如相关问题的StackOverflow回答所示。删除那些JAR,你会很高兴。

我还需要将连接器版本降级到v5.1.39。如果您仍遇到问题,请尝试使用不同的连接器版本。