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'