Ir para o conteúdo principal

Erros de SQL comuns no banco PostgreSQL

Invalid input syntax for integer

Esse erro ocorre quando se tenta dar um CAST em um campo inteiro com um valor inválido.

SELECT CAST('123x' AS INTEGER)
  FROM VERSAODB

SOLUÇÃO abaixo: 

SELECT CAST('123' AS INTEGER)
  FROM VERSAODB

UNION types character varying and integer cannot be matched

Isso ocorrerá quando se está utilizando um comando UNION e os tipos de campos das colunas selecionadas são diferentes.

SELECT P.DOCUMENTO
  FROM PAGAR P 

 UNION ALL 

SELECT CP.IDDOC
  FROM CHEQUE_PRE CP 

SOLUÇÃO abaixo: A solução é sempre igualar os tipos.

SELECT P.DOCUMENTO
  FROM PAGAR P

 UNION ALL

SELECT CAST(CP.IDDOC AS VARCHAR)
  FROM CHEQUE_PRE CP

current transaction is aborted, commands ignored until end of transaction block

Isso começa a ocorrer quando você está em uma sessão com o AUTO COMMIT desabilitado onde você executa um SQL Statement (SELECT * FROM...) e o mesmo tem um na sua sintaxe.

Quando isso ocorre o PostgreSQL aborta e não termina a execução do comando e sendo necessário fazer um ROLLBACK. Quando o AUTO COMIT está habilitado o ROLLBACK é automático. Porém os COMMIT também.

date/time field value out of range: "05/31/2019 00:00:00"

Este erro acontece quando é tentado filtrar uma data/hora em um campo que o tipo dele é somente data.

SELECT * 
  FROM NFS
 WHERE NFS.DATAEMISSAO BETWEEN '05/31/2019 00:00:00' AND '05/31/2021 00:00:00'

SOLUÇÃO abaixo: 

SELECT * 
  FROM NFS
 WHERE NFS.DATAEMISSAO BETWEEN '2019-05-31' AND '2019-05-31'