Question

I am facing an issue where my database connection seems to get dropped midway of a COPY command from jdbc (using PGCopyOutputStream). Any idea why this could be happening. I am writing into a table with two columns of integers. I am on PostgreSQL 9.0.3.

java.io.IOException: Write to copy failed.
at org.postgresql.copy.PGCopyOutputStream.write(PGCopyOutputStream.java:84) ~[postgresql-9.0-801.jdbc4.jar:na]
at org.postgresql.copy.PGCopyOutputStream.write(PGCopyOutputStream.java:76) ~[postgresql-9.0-801.jdbc4.jar:na]
at 
    ...
    ...
Caused by: org.postgresql.util.PSQLException: Database connection failed when writing to copy
at org.postgresql.core.v3.QueryExecutorImpl.writeToCopy(QueryExecutorImpl.java:856) ~[postgresql-9.0-801.jdbc4.jar:na]
at org.postgresql.core.v3.CopyInImpl.writeToCopy(CopyInImpl.java:53) ~[postgresql-9.0-801.jdbc4.jar:na]
at org.postgresql.copy.PGCopyOutputStream.writeToCopy(PGCopyOutputStream.java:125) ~[postgresql-9.0-801.jdbc4.jar:na]
at org.postgresql.copy.PGCopyOutputStream.write(PGCopyOutputStream.java:82) ~[postgresql-9.0-801.jdbc4.jar:na]
... 10 common frames omitted
Caused by: java.net.SocketException: Socket closed
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:116) ~[na:1.7.0_03]
at java.net.SocketOutputStream.write(SocketOutputStream.java:153) ~[na:1.7.0_03]
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) ~[na:1.7.0_03]
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:95) ~[na:1.7.0_03]
at org.postgresql.core.PGStream.SendChar(PGStream.java:174) ~[postgresql-9.0-801.jdbc4.jar:na]
at org.postgresql.core.v3.QueryExecutorImpl.writeToCopy(QueryExecutorImpl.java:850) ~[postgresql-9.0-801.jdbc4.jar:na]
... 13 common frames omitted
Was it helpful?

Solution

This was happening due to an earlier primary key constraint violation, that threw an exception and left the connection unusable.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top