Thread: org.postgresql.util.PSQLException: Protocol error. Session setup failed

org.postgresql.util.PSQLException: Protocol error. Session setup failed

From
Major Services
Date:
I am trying to connect to PostgreSQL database on my local system.

The code is:

Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
Connection conn = DriverManager.getConnection(url);

Running the code I get:

org.postgresql.util.PSQLException: Protocol error. Session setup failed.

Using postgresql-8.4-701.jdbc3 on PostgreSql 8.4






Did not look up error, but looks like the Class.forName().
Attached standard main() to create a connection to PostgreSQL.

danap.

   //============================================================
   // Main public access point method for instantiating the
   // PostgreSQL_JDBC application. Arguments: database, username,
   // & password.
   // ==============================================================

   public static void main(String[] args) throws SQLException, InstantiationException,
         IllegalAccessException, ClassNotFoundException, InterruptedException
   {
      String host, database, username, password;
      Connection dbConnection;

      // Collect connection properties. and setup connection.

      //host = "cindy";
      host = "localhost";

      if (args.length != 0)
      {
         database = args[0];
         username = (args.length > 1) ? args[1] : null;
         password = (args.length > 2) ? args[2] : null;
      }
      else
      {
         database = "key_tables";
         username = "";
         password = "";
      }

      dbConnection = null;
      Class.forName("org.postgresql.Driver").newInstance();
      dbConnection = DriverManager.getConnection("jdbc:postgresql://" + host + "/" + database, username,
         password);
      System.out.println("Connection Created");

      new PostgreSQL_JDBC(dbConnection);

      // Close.
      dbConnection.close();
      System.out.println("Connection Closed");
   }

Re: org.postgresql.util.PSQLException: Protocol error. Session setup failed

From
Maciek Sakrejda
Date:
I don't imagine Class.forName() would throw a PSQLException.

If I'm reading the ConnectionFactoryImpl code correctly, the server
seems to be responding to the Startup message with something that is
neither an error nor an authentication request, which seems weird. Can
you use Wireshark or tcpdump to look at traffic on the wire?
---
Maciek Sakrejda | Software Engineer | Truviso

1065 E. Hillsdale Blvd., Suite 230
Foster City, CA 94404
(650) 242-3500 Main
(650) 242-3516 T
(510) 717-5398 M
(650) 242-3501 F
msakrejda@truviso.com
www.truviso.com



On Tue, Mar 9, 2010 at 8:56 AM, dmp <danap@ttc-cmc.net> wrote:
> Did not look up error, but looks like the Class.forName().
> Attached standard main() to create a connection to PostgreSQL.
>
> danap.
>
>
>   //============================================================
>   // Main public access point method for instantiating the
>   // PostgreSQL_JDBC application. Arguments: database, username,
>   // & password.
>   // ==============================================================
>
>   public static void main(String[] args) throws SQLException,
> InstantiationException,
>         IllegalAccessException, ClassNotFoundException, InterruptedException
>   {
>      String host, database, username, password;
>      Connection dbConnection;
>
>      // Collect connection properties. and setup connection.
>
>      //host = "cindy";
>      host = "localhost";
>
>      if (args.length != 0)
>      {
>         database = args[0];
>         username = (args.length > 1) ? args[1] : null;
>         password = (args.length > 2) ? args[2] : null;
>      }
>      else
>      {
>         database = "key_tables";
>         username = "";
>         password = "";
>      }
>
>      dbConnection = null;
>      Class.forName("org.postgresql.Driver").newInstance();
>      dbConnection = DriverManager.getConnection("jdbc:postgresql://" + host
> + "/" + database, username,
>         password);
>      System.out.println("Connection Created");
>
>      new PostgreSQL_JDBC(dbConnection);
>
>      // Close.
>      dbConnection.close();
>      System.out.println("Connection Closed");
>   }
>
> --
> Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-jdbc
>
>

Re: org.postgresql.util.PSQLException: Protocol error. Session setup failed

From
Major Services
Date:
Output is :

//============================================================ // Main public access point method for instantiating the // PostgreSQL_JDBC application. Arguments: database, username, // & password. // ============================================================== public static void main(String[] args) throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException, InterruptedException { String host, database, username, password; Connection dbConnection; // Collect connection properties. and setup connection. //host = "cindy"; host = "localhost"; if (args.length != 0) { database = args[0]; username = (args.length > 1) ? args[1] : null; password = (args.length > 2) ? args[2] : null; } else { database = "postgres"; username = "postgres"; password = "major"; } dbConnection = null; Class.forName("org.postgresql.Driver").newInstance(); dbConnection = DriverManager.getConnection("jdbc:postgresql://" + host + "/" + database, username, password); System.out.println("Connection Created"); new PostgreSQL_JDBC(dbConnection); // Close. dbConnection.close(); System.out.println("Connection Closed"); }

On Tue, Mar 9, 2010 at 10:26 PM, dmp <danap@ttc-cmc.net> wrote:
Did not look up error, but looks like the Class.forName().
Attached standard main() to create a connection to PostgreSQL.

danap.


  //============================================================
  // Main public access point method for instantiating the
  // PostgreSQL_JDBC application. Arguments: database, username,
  // & password.
  // ==============================================================

  public static void main(String[] args) throws SQLException, InstantiationException,
        IllegalAccessException, ClassNotFoundException, InterruptedException
  {
     String host, database, username, password;
     Connection dbConnection;

     // Collect connection properties. and setup connection.

     //host = "cindy";
     host = "localhost";

     if (args.length != 0)
     {
        database = args[0];
        username = (args.length > 1) ? args[1] : null;
        password = (args.length > 2) ? args[2] : null;
     }
     else
     {
        database = "key_tables";
        username = "";
        password = "";
     }

     dbConnection = null;
     Class.forName("org.postgresql.Driver").newInstance();
     dbConnection = DriverManager.getConnection("jdbc:postgresql://" + host + "/" + database, username,
        password);
     System.out.println("Connection Created");

     new PostgreSQL_JDBC(dbConnection);

     // Close.
     dbConnection.close();
     System.out.println("Connection Closed");
  }

Re: org.postgresql.util.PSQLException: Protocol error. Session setup failed

From
Mark Kirkwood
Date:
Major Services wrote:
> I am trying to connect to PostgreSQL database on my local system.
>
> The code is:
>
> Class.forName("org.postgresql.Driver");
> String url =
> "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
> Connection conn = DriverManager.getConnection(url);
>
> Running the code I get:
>
> org.postgresql.util.PSQLException: Protocol error. Session setup failed.
>
> Using postgresql-8.4-701.jdbc3 on PostgreSql 8.4
>
>
>
>
>

Try adding some debug info (will help us see what is going on) - e.g:


  Class.forName("org.postgresql.Driver");
  String url =
"jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";

  Properties props = new Properties();
  props.setProperty("loglevel","2");

  Connection conn = DriverManager.getConnection(url, props);



regards

Mark

Re: org.postgresql.util.PSQLException: Protocol error. Session setup failed

From
Major Services
Date:
Hi,
Following is the error report:

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 13 in the jsp file: /jsp/pgtest.jsp
Properties cannot be resolved to a type
10: {
11: Class.forName("org.postgresql.Driver");
12: String url = "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
13: Properties props = new Properties();
14: props.setProperty("loglevel","2");
15: Connection conn = DriverManager.getConnection(url, props);
16: }
Thanks

On Wed, Mar 10, 2010 at 4:02 AM, Mark Kirkwood <mark.kirkwood@catalyst.net.nz> wrote:
Major Services wrote:
I am trying to connect to PostgreSQL database on my local system.

The code is:

Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
Connection conn = DriverManager.getConnection(url);

Running the code I get:

org.postgresql.util.PSQLException: Protocol error. Session setup failed.

Using postgresql-8.4-701.jdbc3 on PostgreSql 8.4






Try adding some debug info (will help us see what is going on) - e.g:



 Class.forName("org.postgresql.Driver");
 String url = "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";

 Properties props = new Properties();
 props.setProperty("loglevel","2");

 Connection conn = DriverManager.getConnection(url, props);



regards

Mark

Re: org.postgresql.util.PSQLException: Protocol error. Session setup failed

From
Guillaume Cottenceau
Date:
Major Services <services.major 'at' gmail.com> writes:

> Hi,
> Following is the error report:

lol!

(sorry, couldn't resist)

> org.apache.jasper.JasperException: Unable to compile class for JSP:
>
> An error occurred at line: 13 in the jsp file: /jsp/pgtest.jsp
> Properties cannot be resolved to a type
>
> 10: {
> 11: Class.forName("org.postgresql.Driver");
> 12:  String url = "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
> 13:  Properties props = new Properties();
> 14:  props.setProperty("loglevel","2");
>
> 15:  Connection conn = DriverManager.getConnection(url, props);
> 16: }
>
--
Guillaume Cottenceau

This output error is total unrelated to your original error and does not
involve
the jdbc. Perhaps you should back out and try from simple to more
complicated.

1. Connect on the local system with psql
2. Create a simple application, not using a servlet, and try connecting.
You can use the sample main as I posted to do this or your own code.
3. Make sure a simple servlet, not using the database is working.

> Hi,
> Following is the error report:
>
> org.apache.jasper.JasperException: Unable to compile class for JSP:
>
> An error occurred at line: 13 in the jsp file: /jsp/pgtest.jsp
> Properties cannot be resolved to a type
> 10: {
> 11: Class.forName("org.postgresql.Driver");
> 12: String url =
> "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
> 13: Properties props = new Properties();
> 14: props.setProperty("loglevel","2");
> 15: Connection conn = DriverManager.getConnection(url, props);
> 16: }


I'm in agreement with Maciek comments here. I can not duplicate
your PSQLException with problem with Class.forName or any other
invalid input for connection.

danap

> I don't imagine Class.forName() would throw a PSQLException.
>
> If I'm reading the ConnectionFactoryImpl code correctly, the server
> seems to be responding to the Startup message with something that is
> neither an error nor an authentication request, which seems weird. Can
> you use Wireshark or tcpdump to look at traffic on the wire?
> ---
> Maciek Sakrejda | Software Engineer | Truviso

> Class.forName("org.postgresql.Driver");
> String url =
> "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
> Connection conn = DriverManager.getConnection(url);
>
> Running the code I get:
>
> org.postgresql.util.PSQLException: Protocol error. Session setup failed.
>
> Using postgresql-8.4-701.jdbc3 on PostgreSql 8.4



Re: org.postgresql.util.PSQLException: Protocol error. Session setup failed

From
Major Services
Date:
Please ignore the previous output.

Here is the one to consider:

org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/pgtest.jsp at line 14

11: String url = "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
12: Properties props = new Properties();
13: props.setProperty("loglevel","2");
14: Connection conn = DriverManager.getConnection(url , props);
15: }
16: %>
17: </body>


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

javax.servlet.ServletException: org.postgresql.util.PSQLException: Protocol error.  Session setup failed.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.jsp.pgtest_jsp._jspService(pgtest_jsp.java:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

org.postgresql.util.PSQLException: Protocol error.  Session setup failed.
org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:402)
org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:108)
org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24)
org.postgresql.Driver.makeConnection(Driver.java:393)
org.postgresql.Driver.connect(Driver.java:267)
java.sql.DriverManager.getConnection(DriverManager.java:525)
java.sql.DriverManager.getConnection(DriverManager.java:140)
org.apache.jsp.jsp.pgtest_jsp._jspService(pgtest_jsp.java:68)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 

On Wed, Mar 10, 2010 at 8:01 PM, Major Services <services.major@gmail.com> wrote:
Hi,
Following is the error report:

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 13 in the jsp file: /jsp/pgtest.jsp
Properties cannot be resolved to a type
10: {
11: Class.forName("org.postgresql.Driver");
12: String url = "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
13: Properties props = new Properties();
14: props.setProperty("loglevel","2");
15: Connection conn = DriverManager.getConnection(url, props);
16: }
Thanks


On Wed, Mar 10, 2010 at 4:02 AM, Mark Kirkwood <mark.kirkwood@catalyst.net.nz> wrote:
Major Services wrote:
I am trying to connect to PostgreSQL database on my local system.

The code is:

Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
Connection conn = DriverManager.getConnection(url);

Running the code I get:

org.postgresql.util.PSQLException: Protocol error. Session setup failed.

Using postgresql-8.4-701.jdbc3 on PostgreSql 8.4






Try adding some debug info (will help us see what is going on) - e.g:



 Class.forName("org.postgresql.Driver");
 String url = "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";

 Properties props = new Properties();
 props.setProperty("loglevel","2");

 Connection conn = DriverManager.getConnection(url, props);



regards

Mark


Re: org.postgresql.util.PSQLException: Protocol error. Session setup failed

From
"Kevin Grittner"
Date:
Major Services <services.major@gmail.com> wrote:

> "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=
> major"

> *root cause*
>
> org.postgresql.util.PSQLException: Protocol error.  Session setup
> failed.
> org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(
> ConnectionFactoryImpl.java:402)
> org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(
> ConnectionFactoryImpl.java:108)

What happens if you try to connect with:

psql -h localhost -p 5432 postgres postgres

and type major as the password when prompted?

-Kevin

Re: org.postgresql.util.PSQLException: Protocol error. Session setup failed

From
Maciek Sakrejda
Date:
Okay, this looks like the stack trace you originally posted. So now
we're back to what we were asking earlier--can you enable logging in
the driver or capture the traffic on the wire with a tool like
Wireshark or tcpdump?

---
Maciek Sakrejda | Software Engineer | Truviso

1065 E. Hillsdale Blvd., Suite 230
Foster City, CA 94404
(650) 242-3500 Main
(650) 242-3501 F
msakrejda@truviso.com
www.truviso.com



On Wed, Mar 10, 2010 at 10:34 AM, Major Services
<services.major@gmail.com> wrote:
> Please ignore the previous output.
>
> Here is the one to consider:
>
> org.apache.jasper.JasperException: An exception occurred processing JSP page
> /jsp/pgtest.jsp at line 14
>
> 11:  String url =
> "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
>
> 12:  Properties props = new Properties();
> 13:  props.setProperty("loglevel","2");
> 14:  Connection conn = DriverManager.getConnection(url , props);
> 15: }
> 16: %>
> 17: </body>
>
>
>
> Stacktrace:
>     org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
>     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
>     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
>
>     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>
> root cause
>
> javax.servlet.ServletException: org.postgresql.util.PSQLException: Protocol
> error.  Session setup failed.
>
>     org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
>     org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
>     org.apache.jsp.jsp.pgtest_jsp._jspService(pgtest_jsp.java:80)
>
>     org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
>     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
>
>     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>
> root cause
>
> org.postgresql.util.PSQLException: Protocol error.  Session setup failed.
>
>     org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:402)
>     org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:108)
>     org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
>
>     org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
>     org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
>     org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24)
>
>     org.postgresql.Driver.makeConnection(Driver.java:393)
>     org.postgresql.Driver.connect(Driver.java:267)
>     java.sql.DriverManager.getConnection(DriverManager.java:525)
>     java.sql.DriverManager.getConnection(DriverManager.java:140)
>
>     org.apache.jsp.jsp.pgtest_jsp._jspService(pgtest_jsp.java:68)
>     org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
>
>     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
>     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>
>
>
> On Wed, Mar 10, 2010 at 8:01 PM, Major Services <services.major@gmail.com>
> wrote:
>>
>> Hi,
>> Following is the error report:
>>
>> org.apache.jasper.JasperException: Unable to compile class for JSP:
>>
>> An error occurred at line: 13 in the jsp file: /jsp/pgtest.jsp
>> Properties cannot be resolved to a type
>>
>>
>> 10: {
>> 11: Class.forName("org.postgresql.Driver");
>> 12:  String url =
>> "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
>> 13:  Properties props = new Properties();
>>
>> 14:  props.setProperty("loglevel","2");
>>
>> 15:  Connection conn = DriverManager.getConnection(url, props);
>> 16: }
>>
>> Thanks
>>
>> On Wed, Mar 10, 2010 at 4:02 AM, Mark Kirkwood
>> <mark.kirkwood@catalyst.net.nz> wrote:
>>>
>>> Major Services wrote:
>>>>
>>>> I am trying to connect to PostgreSQL database on my local system.
>>>>
>>>> The code is:
>>>>
>>>> Class.forName("org.postgresql.Driver");
>>>> String url =
>>>> "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
>>>> Connection conn = DriverManager.getConnection(url);
>>>>
>>>> Running the code I get:
>>>>
>>>> org.postgresql.util.PSQLException: Protocol error. Session setup failed.
>>>>
>>>> Using postgresql-8.4-701.jdbc3 on PostgreSql 8.4
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>> Try adding some debug info (will help us see what is going on) - e.g:
>>>
>>>
>>>  Class.forName("org.postgresql.Driver");
>>>  String url =
>>> "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
>>>
>>>  Properties props = new Properties();
>>>  props.setProperty("loglevel","2");
>>>
>>>  Connection conn = DriverManager.getConnection(url, props);
>>>
>>>
>>>
>>> regards
>>>
>>> Mark
>>
>
>

Re: org.postgresql.util.PSQLException: Protocol error. Session setup failed

From
Mark Kirkwood
Date:
Oh dear - probably missing imports or something in your code.

Maybe try running a standalone java program from the command line (see
below), as thats what I used to check this:

$ export CLASSPAT=path-to-your-postgresql.jar:.
$ java test1

---- test1.java ---

import java.sql.*;
import java.util.*;

public class test1 {
public static void main( String args[] ) throws Exception {

    Class.forName("org.postgresql.Driver");
    String url =
"jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";

    Properties props = new Properties();
    props.setProperty("loglevel","2");

    Connection conn = DriverManager.getConnection(url, props);
    System.out.println( "Connected to: " + url  );

    conn.close ();
  }
}



Major Services wrote:
> Hi,
> Following is the error report:
>
> org.apache.jasper.JasperException: Unable to compile class for JSP:
>
> An error occurred at line: 13 in the jsp file: /jsp/pgtest.jsp
> Properties cannot be resolved to a type
>
> 10: {
> 11: Class.forName("org.postgresql.Driver");
> 12:  String url = "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=major";
> 13:  Properties props = new Properties();
> 14:  props.setProperty("loglevel","2");
>
> 15:  Connection conn = DriverManager.getConnection(url, props);
> 16: }
>


Re: org.postgresql.util.PSQLException: Protocol error. Session setup failed

From
Mark Kirkwood
Date:
Make that CLASSPATH sorry...!

I wrote:
>
> $ export CLASSPAT=path-to-your-postgresql.jar:.


Mark Kirkwood wrote:
> Make that CLASSPATH sorry...!
>
> I wrote:
>>
>> $ export CLASSPAT=path-to-your-postgresql.jar:.

Only don't use CLASSPATH, use the "-classpath" (a.k.a., "-cp") option to the
"java" command.

--
Lew

Major Services wrote:
> Output is :

Output of what?

> //============================================================ // Main
> public access point method for instantiating the // PostgreSQL_JDBC
> application. Arguments: database, username, // & password. //
> ============================================================== public
> static void main(String[] args) throws SQLException,
> InstantiationException, IllegalAccessException, ClassNotFoundException,
> InterruptedException { String host, database, username, password;
> Connection dbConnection; // Collect connection properties. and setup
> connection. //host = "cindy"; host = "localhost"; if (args.length != 0)
> { database = args[0]; username = (args.length > 1) ? args[1] : null;
> password = (args.length > 2) ? args[2] : null; } else { database =
> "postgres"; username = "postgres"; password = "major"; } dbConnection =
> null; Class.forName("org.postgresql.Driver").newInstance(); dbConnection
> = DriverManager.getConnection("jdbc:postgresql://" + host + "/" +
> database, username, password); System.out.println("Connection Created");
> new PostgreSQL_JDBC(dbConnection); // Close. dbConnection.close();
> System.out.println("Connection Closed"); }

Wow, that is some unreadable source code.  I see nothing here that sheds light
on your question, though.

What caught my eye in what

   dmp wrote:

is

>       public static void main(String[] args) throws SQLException,
>     InstantiationException,
>             IllegalAccessException, ClassNotFoundException,
>     InterruptedException

If you don't handle the exceptions, perhaps even with logging, it's harder to
diagnose what went wrong.  I am also curious why the declaration of
'InterruptedException' is in the throws list.

>       {
>          String host, database, username, password;
>          Connection dbConnection;

Declared but not instantiated - correct enough except that
  ...
>          dbConnection = null;

assigned here, then

>          Class.forName("org.postgresql.Driver").newInstance();
>          dbConnection = DriverManager.getConnection("jdbc:postgresql://"
>     + host + "/" + database, username,
>             password);

the value is replaced here.  It's a best practice in Java to declare variables
within the scope of use, and close to the point of use.  It doesn't make much
sense to assign a value to the variable that is never used, just thrown away.

Also that argument applies to the invocation of 'newInstance()'.  The driver
registers itself with the driver manager on class initialization; the creation
of an instance does nothing but waste time.  User code never directly uses
driver instances.

--
Lew