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.
xxxxxxxxxx
SELECT CAST('123x' AS INTEGER)
FROM VERSAODB
SOLUÇÃO abaixo:
xxxxxxxxxx
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.
xxxxxxxxxx
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.
xxxxxxxxxx
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.
xxxxxxxxxx
SELECT *
FROM NFS
WHERE NFS.DATAEMISSAO BETWEEN '05/31/2019 00:00:00' AND '05/31/2021 00:00:00'
SOLUÇÃO abaixo:
xxxxxxxxxx
SELECT *
FROM NFS
WHERE NFS.DATAEMISSAO BETWEEN '2019-05-31' AND '2019-05-31'