Обсуждение: ODBC queries die; "Unexpected protocol character from backend"

Поиск
Список
Период
Сортировка

ODBC queries die; "Unexpected protocol character from backend"

От
Steve Frampton
Дата:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello:

I have a PostgreSQL 7.1.3 system which is accessed from an Apache CGI
handler via ODBC (driven by libiodbc-3.0.5).  It has worked very well, but
on two occasions queries just stop working.

The Apache error log shows:

  Unknown error;
  Unexpected protocol character from backend (send_query), SQLSTATE=S1000
  Unexpected protocol character from backend (send_query), SQLSTATE=S1000

and not much else.  If I stop and restart the Apache handler, the problem
is resolved -- until the next time.

I see nothing in the PostgreSQL logs on the database server which would
describe a possible cause.  I'm not sure if it is related (it probably
is), but the PostgreSQL logs contain many lines of the form:

  pq_flush: send() failed: Broken pipe

Prior to these lines were occasional lines:

  pq_recvbuf: unexpected EOF on client connection

but I would assume the user just hit stop on their client browser rather
than waiting for the query to finish.

Any advice would be appreciated.

- -----------------< codingstyle.com: What's your style? >----------------
Steve Frampton   <frampton@codingstyle.com>   http://www.codingstyle.com
GNU Privacy Guard ID: 99F18E3A  (see http://www.gnupg.org/ for details)
GNU-PG Fingerprint: 244D FA2F 5EAB 6F52 41B4  8FB4 D4F4 0738 99F1 8E3A
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE8Cw/x1PQHOJnxjjoRAojGAJ9AJbOhOUtNUBr4ggs6CgmVAXBfnwCgrNHT
LxQAFiJ9THwmKtno/NEWVJs=
=bJD1
-----END PGP SIGNATURE-----


Re: ODBC queries die; "Unexpected protocol character from backend"

От
Tom Lane
Дата:
Steve Frampton <frampton@codingstyle.com> writes:
> I have a PostgreSQL 7.1.3 system which is accessed from an Apache CGI
> handler via ODBC (driven by libiodbc-3.0.5).  It has worked very well, but
> on two occasions queries just stop working.
> The Apache error log shows:
>   Unknown error;
>   Unexpected protocol character from backend (send_query), SQLSTATE=S1000
>   Unexpected protocol character from backend (send_query), SQLSTATE=S1000

This looks like the ODBC driver has somehow gotten out of sync with the
backend, and is looking for a message type character in the body of some
other message.  Hard to tell for sure though with so little info.  You
might need to add some debug instrumentation to the ODBC driver to try
to figure out what's happening.  At the very least, turn on query
logging at the postmaster so you can work out what query is causing this.

            regards, tom lane