2016-09-27 2 views
0

Я использую Tomcat версии 8 и разъем MySQL версии 6. Вот мой context.xml:java.sql.SQLException: Невозможно создать PoolableConnectionFactory (требуется CLIENT_PLUGIN_AUTH)

<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" 
      /> 

Это класс я использую для 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); 
    } 

На странице Регистрация, когда я нажимаю зарегистрироваться, я получаю java.sql.SQLException: Невозможно создать PoolableConnectionFactory (требуется CLIENT_PLUGIN_AUTH) исключение. Я попытался изменить localhost на 127.0.0.1, но это не сработало. Я также проверял разрешения MySQL, и они выглядят отлично. Я попытался создать другого пользователя, но он не сработал. Я попытался переместить создание другого context.xml в папку WEB-INF, но не повезло. Я не знаю, что еще я могу сделать. Любая помощь приветствуется.

ответ

0

В случае, если кто-либо испытывает ту же проблему, я помню, что я скопировал JAR-порт MySQL Connector в папку lib от Tomcat, как было предложено ответом StackOverflow из соответствующего вопроса. Удалите эти JAR, и вам будет хорошо идти.

Мне также необходимо было понизить мою версию разъема до версии 5.1.39. Попробуйте использовать различные версии разъемов, если у вас все еще возникают проблемы.

Смежные вопросы