Re: warning en el log

From: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>
To: Jaime Casanova <jaime(at)2ndquadrant(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: warning en el log
Date: 2013-07-06 19:00:13
Message-ID: CANm+PCBgUJ2wDX03Kv7+zFCopoq6Hv8yjxT7ufw07J_BUGRptw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

muchas gracias por sus respuestas. Jaime, excelente explicación.
evidentemente el problema es por el caracter, pero lo que quiero es poder
ubicar que modulo o que parte del sistema (php) lo está enviando de esa
manera.
normalmente armo las query de la siguiente manera:
$sql = "select
columna1,
columna2,
columna3
from
tabla1
innner join tabla2 using(columna)
....
....";
no recuerdo tener ninguna cadena con la famosa barra "\" pero *¿será que
está chillando por que la sentencia no va en una sola línea?*

voy a ver si entiendo los parámetros de log para hacer que me mustre las
sentencias que se ejecutan y comparar con los instantes del warning.

Saludos

Guillermo Villanueva

El 6 de julio de 2013 08:27, Jaime Casanova <jaime(at)2ndquadrant(dot)com>escribió:

> 2013/7/5 Guillermo E. Villanueva <guillermovil(at)gmail(dot)com>:
> >
> > 2013-07-05 20:53:16 ART WARNING: uso no estandar de escape en un
> literal de
> > cadena en car.cter 128
> > 2013-07-05 20:53:16 ART HINT: Use la sintaxis de escape para cadenas,
> por
> > ej. E'\r\n'.
> >
> [...]
> > En versión 9.1 directamente el sistema no funciona y casi seguro que es
> por
> > esto.
> >
>
> El caracter \ según el estándar SQL no tiene ningún significado
> especial. Aunque estamos
> acostumbrados a usarlo para asignar un significado espercial al
> siguiente caracter, para
> que me entiendas, si lees \n normalmente piensas en un salto de linea
> (lenguaje c o php) o
> \' en una comilla dentro de un texto (plpgsql o sql puro, por ejemplo)
>
> Sin embargo esa concepción va en contra del estándar SQL que dice que
> \' representa a
> un backslash seguido de una comilla simple, es decir dos caracteres no
> uno, y el segundo no
> es especial de algún modo.
>
> Para esto se invento una variable llamada standard_conforming_strings
> que venia en off y que en
> 9.1 empezó a estar en on de forma predeterminada.
>
> Haz la prueba ejecuta esta sentencia en 9.0 y en 9.1:
>
> SELECT 'Jaime\'s test';
>
> Donde estoy usando el backslash para indicar que la comilla junto a
> 'Jaime' es parte del texto
> y no termina la cadena.
>
> En 9.0 habrá funcionado enviando el mensaje que muestras y en 9.1
> habrá dado un error por que
> te pide una comilla adicional. Claro, 9.1 ve esa comilla en medio como
> cerrando el texto así que
> la comilla al final abre un nuevo texto.
>
> SOLUCIÓN: pon standard_conforming_strings en off en el postgresql.conf
> del 9.1 (no te olvides
> hacer un reload)
>
> PS: también me parece tonto que no muestre la sentencia donde esta el
> WARNING
>
> --
> Jaime Casanova www.2ndQuadrant.com
> Professional PostgreSQL: Soporte 24x7 y capacitación
> Phone: +593 4 5107566 Cell: +593 987171157
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message juan jaimes 2013-07-07 21:13:54 Re: OT Reporteadores Web
Previous Message Jaime Casanova 2013-07-06 11:27:43 Re: warning en el log