JF
BUG no PK serial do PostgreSQL
No PostgreSQL, chaves primárias marcadas como serial e no model setadas como 'serial' dá um erro SQLSTATE[42602]: Invalid name: 7 ERRO: sintaxe de nome inválida quando o registro é novo! Setando-se 'max' (mesmo a pk sendo serial) o problema se resolve. O problema está no store() do TRecord. Como corrigir o bug?
Acabei de testar aqui e funcionou 100%.
Recomendo libar o dump da transação. TTransaction::dump()
CREATE TABLE public.city (
id integer DEFAULT nextval('public.city_id_seq'::regclass) NOT NULL,
name character varying(200),
state_id integer NOT NULL
);
TTransaction::dump() não resolveu e uso a seguinte sintaxe:
no form uso:
Seria isso? pois em todos NOVOS registros dá o erro. Na edição salva direitinho!
O engraçado que no arquivo de log de sql está lá o Insert (o mesmo do dump) mas o registro não está na tabela!
O Log é registrado antes, por isso ele foi gravado. Caso contrário, você não conseguiria encontrar o comando.
Você está fechando a transação?
Estou tendo o mesmo problema.
Estou com o mesmo problema. Vocês conseguiram resolver?
Estou com o mesmo problema. Vocês conseguiram resolver?
Estou com o mesmo problema. Vocês conseguiram resolver?
Carlos, achei 2 soluções. A primeira é não usar no PG o tipo serial. Estou usando o auto incremento, como mostro;
A outra maneira, usando o tipo serial no PG (caso já esteja pronto) é na model da classe usar-se o IDPOLICY = 'max' assim:
Joao, muito obrigado.
Olá a todos.
Esse erro acontece com que usa o Adiante Pro, como eu, e se deve a opção criar classe para entidade gerando o TABLENAME com aspas duplas no nome.
Ai quando ele vai gerar o nome da sequência, vem o nome com aspas: "public"."documento"_id_seq.
Solução: só remover as aspas duplas nos nomes das tabelas no model.