Aviso sobre uma string literal fora do padrão

Se em um certo momento encontrar o seguinte aviso no seu administrador do banco de dados:

WARNING: nonstandard use of \\ in a string literal
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.

... é porque está utilizando uma string literal fora do padrão, ou seja, o comando sql não está errado mas pode estar em versões futuras.

Para entender melhor sobre string literal, acesse o link.

Agora, caso deseje não visualizar mais o aviso, você pode seguir uma dessas três soluções abaixo. Leia atentamente a todas elas para entender bem o que cada uma faz e qual se encaixe perfeitamente em seu caso.


1ª Solução

Abra o arquivo postgresql.conf que está localizado dentro da pasta data do PostgreSQL.

Procure pela linha:

standard_conforming_strings

Por padrão, é comentado pelo símbolo de número (#) e definido como off. Altere o valor para on e remova o símbolo ficando assim:

standard_conforming_strings = on

Em seguida salve o arquivo e reinicie o servidor.

Importante: Nesse caso as barras invertidas serão tratadas como caracteres normais e não como caracteres de escape.


2ª Solução

Essa pode ser a melhor solução, porém pode se tornar a mais trabalhosa.

Necessita preceder todas as strings literais que contem uma barra invertida com o valor "E".

Exemplo:

E'Primeira parte \n Segunda parte'

Importante: Caso queira que o valor não seja tratado como caractere de escape, basta substituir as barras invertidas simples por barras invertidas duplas.


3ª Solução

Para apenas ignorar os avisos é necessário alterar um valor.

Abra o arquivo postgresql.conf que está localizado dentro da pasta data do PostgreSQL.

Procure pela linha:

escape_string_warning

Por padrão, é comentado pelo símbolo de número (#) e definido como on. Altere o valor para off e remova o símbolo ficando assim:

escape_string_warning = off

Em seguida salve o arquivo e reinicie o servidor.

Isso vai se livrar das advertências. Barras invertidas simples serão tratados como caractere de escape.

Essa solução não é muito recomendada, como disse, o comportamento pode mudar em uma versão futura.

Comentários