Enfrentar o código 22 do Prisma é comum ao trabalhar com migrations e esquemas no banco de dados; este guia resolve o problema com orientações práticas e exemplos claros.

O que é o código 22 do Prisma

O código 22 do Prisma indica uma violação de integridade referencial, geralmente quando você tenta inserir ou atualizar um registro que faz referência a outro registro inexistente na tabela relacionada. Isso significa que o banco de dados recusou a operação porque a chave estrangeira não pode apontar para um valor inválido.

Como identificar rapidamente

Na prática, o erro aparece no console ou nos logs como um erro de banco de dados com a mensagem mencionando a violação da chave estrangeira. Você pode ver falhas em operações de create, update ou upsert ao usar Prisma Client, especialmente ao trabalhar com relações obrigatórias.

CÓDIGO CODE 22 Painel Do CHEVROLET ÔNIX e PRISMA 2014 a 2019 - VEJA A ...
CÓDIGO CODE 22 Painel Do CHEVROLET ÔNIX e PRISMA 2014 a 2019 - VEJA A ...

Requisitos e ferramentas necessárias

  • Banco de dados compatível com chaves estrangeiras (PostgreSQL, MySQL, SQL Server, SQLite).
  • Prisma CLI instalado globalmente ou como dependência de desenvolvimento.
  • Prisma Client configurado e sincronizado com o banco.
  • Um modelo Prisma com relações bem definidas, especialmente @relation e references.

Passo a passo para corrigir o erro

  1. Localize o registro que está causando a falha na operação de gravação.
  2. Verifique se o valor passado para a chave estrangeira existe na tabela pai correspondente.
  3. Se o valor não existir, crie o registro pai necessário antes de inserir o registro filho.
  4. Use transações sempre que precisar criar ou atualizar vários registros relacionados de uma só vez.
  5. Considere tornar a relação opcional (?) se o vínculo com o registro pai não for obrigatório no momento.
  6. Atualize o banco com prisma migrate dev caso precise ajustar o esquema para permitir nulos ou adicionar registros padrão.
  7. Valide os dados de entrada no código antes de chamar o Prisma Client para evitar enviar referências inválidas.
  8. Teste as operações em ambiente de desenvolvimento antes de aplicar em produção.

Exemplo de modelo Prisma causando o problema

Um modelo que pode gerar o código 22 do Prisma quando usado incorretamente:

model Author {
  id Int @id @default(autoincrement())
  name String
  posts Post[]
}

model Post {
  id Int @id @default(autoincrement())
  title String
  authorId Int
  author Author @relation(fields: [authorId], references: [id])
}

Neste caso, criar um Post com um authorId que não existe na tabela de Author retornará o erro.

Boas práticas para evitar o erro

  • Sempre valide a existência do registro pai antes de associar.
  • Use transações para grupos de operações relacionadas.
  • Defina relações opcionais quando o vínculo não for crítico.
  • Adicione validações no nível de aplicação e no banco de dados.
  • Use seeds ou dados de exemplo para testar cenários de referência.

Quando considerar relações opcionais

Tornar um campo de chave estrangeira opcional pode ser a solução mais prática quando o vínculo com o registro pai não é obrigatório ou quando os dados podem ser criados em momentos diferentes. Isso reduz a rigidez e evita o código 22 do Prisma em cenários de carga assíncrona ou em etapas de processamento separadas.

Código 21 e 22 Erro Prisma 2013 #Code21 #Código22 #Prisma - YouTube
Código 21 e 22 Erro Prisma 2013 #Code21 #Código22 #Prisma - YouTube

Perguntas frequentes

Por que ocorre o erro código 22 do Prisma ao criar um registro?

O erro acontece porque você está tentando inserir um valor em uma chave estrangeira que não existe na tabela relacionada, violando a integridade referencial do banco de dados.

Posso corrigir o problema apenas alterando o modelo Prisma?

Alterar o modelo para tornar a relação opcional ou ajustar as constraints pode ajudar, mas você também precisa garantir que os dados enviados estejam alinhados com o esquema do banco.

Como posso depurar rapidamente esse erro no meu código?

Ative os logs no Prisma Client, inspecione a query SQL rejeitada e consulte o banco diretamente para verificar se os registros pai já existem.

Código 21 e 22 do onix e prisma ( canceller risistor) pingo de led t10 ...
Código 21 e 22 do onix e prisma ( canceller risistor) pingo de led t10 ...

Devo usar transações sempre que houver risco de código 22 do Prisma?

Sim, transações ajudam a manter a consistência ao criar ou atualizar vários registros relacionados, evitando que um pai falte durante o processo.