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
>
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 |