Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PSQLException: password-based authentication

Here is the Exception:when I run my testDao file, working on springs.Is there any path given to database in springs?

    org.postgresql.util.PSQLException: The server requested password-based authentication, but no password was provided.
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:473)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:203)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:65)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:159)
    at org.postgresql.Driver.makeConnection(Driver.java:416)
    at org.postgresql.Driver.connect(Driver.java:283)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.test.dao.java.TestDao.getConnection(TestDao.java:37)
    at com.test.dao.java.TestDao.getTest(TestDao.java:61)
    at com.test.main.java.TestMain.main(TestMain.java:33)

HERE is my >>testDao file where connection with postgresql is made

   @Component 
    public class TestDao {
    static PreparedStatement ps;
    ResultSet rs;
    Connection conn= null;

     /**
     * @return
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    private Connection getConnection() throws SQLException, ClassNotFoundException,FileNotFoundException,NullPointerException{


         if(conn==null)
         {
        try {
            Class.forName("org.postgresql.Driver");
            conn = DriverManager.getConnection(
                       "jdbc:postgresql://localhost:5432/testdb?user=postgres & password=postgres");
                    conn.close();
        }
                catch(Exception e) {
            e.printStackTrace();

        }
     }
         return conn;


    }

    /**
     * @param testId
     * @return
     * @throws SQLException
     * @throws ClassNotFoundException
     * @throws NullPointerException 
     * @throws FileNotFoundException 
     */
    public Test getTest(int testId) throws SQLException, ClassNotFoundException, FileNotFoundException, NullPointerException  {

            conn = getConnection();
        try {

            conn = getConnection();
            ps =conn.prepareStatement("SELECT * FROM testdb.testtab where id =?");
            ps.setInt(1, testId);
            Test test =null;
            rs = ps.executeQuery();
            if(rs.next())
            {
                test = new Test(testId, rs.getString("name"));
            }

    return test;
        }
        finally
        {
            rs.close();
            ps.close();
            conn.close();
        }


    }
    }

HERE is my >>springNew.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd 
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd "

xmlns:context="http://www.springframework.org/schema/context">
<!-- <context-annotation-config/> -->
<context:component-scan base-package="com.test.dao"/>
</beans>
like image 375
Dead End Avatar asked Jan 14 '16 06:01

Dead End


1 Answers

I got the issue and finally resolved it firstly schema was needed to be mentioned as below

 conn=DriverManager.getConnection("jdbc:postgresql://localhost:5432/testdb?currentSchema=testdb&user=postgres&password=postgres");

Secondly I was closing the conn thus it was returning empty rs and was closing the connection before it could be used.

like image 161
Dead End Avatar answered Oct 24 '22 08:10

Dead End