Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Bug] Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement [ERRO: a nova linha da relação "series" viola a restrição de verificação "series_genero_check"

Meu Github: https://github.com/TiagoSouzaGarcia/screenmatch

Erro:

org.springframework.dao.DataIntegrityViolationException: could not execute statement [ERRO: a nova linha da relação "series" viola a restrição de verificação "series_genero_check" Detalhe: Registro que falhou contém (32, Mayumi Tanaka, Akemi Okamura, Laurent Vernin, 9, ANIMACAO, https://m.media-amazon.com/images/M/MV5BOTI1MmI4NzItYTg2Yy00NmVk..., Monkey D. Luffy parte em uma aventura com sua tripulação pirat..., One Piece, 1).] [insert into series (atores,avaliacao,genero,poster,sinopse,nome_da_serie,total_temporadas) values (?,?,?,?,?,?,?) returning id]; SQL [insert into series (atores,avaliacao,genero,poster,sinopse,nome_da_serie,total_temporadas) values (?,?,?,?,?,?,?) returning id]; constraint [null] at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:290) ~[spring-orm-6.1.10.jar:6.1.10] ...

4 respostas

Forneça mais detalhes do erro. O que você está tentando fazer. Mas parece que o erro é que ele está querendo fazer o insert usando os parâmetros: atores, avaliaco, genero, poster, sinopse, nome da serie, total temporadas) e está sendo passado: id, atores, avaliacao, genero, poster,nome da serie, total temporadas. Ou seja tem um parâmetro a mais.

O erro ocorre quando pesquiso essa série (One Piece). Embora no banco já tenha outras séries salvas essa específica está dando erro.

Outros erros que aparecem em seguida no terminal:

Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement [ERRO: a nova linha da relação "series" viola a restrição de verificação "series_genero_check" Detalhe: Registro que falhou contém (35, Mayumi Tanaka, Akemi Okamura, Laurent Vernin, 9, ANIMACAO, https://m.media-amazon.com/images/M/MV5BOTI1MmI4NzItYTg2Yy00NmVk..., Monkey D. Luffy parte em uma aventura com sua tripulação pirat..., One Piece, 1).] [insert into series (atores,avaliacao,genero,poster,sinopse,nome_da_serie,total_temporadas) values (?,?,?,?,?,?,?) returning id]

Caused by: org.postgresql.util.PSQLException: ERRO: a nova linha da relação "series" viola a restrição de verificação "series_genero_check" Detalhe: Registro que falhou contém (35, Mayumi Tanaka, Akemi Okamura, Laurent Vernin, 9, ANIMACAO, https://m.media-amazon.com/images/M/MV5BOTI1MmI4NzItYTg2Yy00NmVk..., Monkey D. Luffy parte em uma aventura com sua tripulação pirat..., One Piece, 1).

Quais os tamanhos e tipos dos campos no Banco de dados? Qua o tamanho em caracteres do link que contém o poster? Será que o link está excedendo o limite de tamanho do campo? É só uma suposição.

solução!

Boa noite,

Obrigado Wendel.

O problema estava nas constraints do banco Postgres, criado pelo enum de Categoria. Estava limitado as categorias de quando eu criei o banco. Mesmo adicionando outras na classe ele não atualizava a constraint do banco e qualquer série que eu pesquisasse que tivesse uma categoria diferente na primeira posição do array de categorias ocorreria o erro.

Para resolve-lo sem deletar os bancos eu rodei esses scripts no postgres:

ALTER TABLE series DROP CONSTRAINT series_genero_check;

ALTER TABLE series ADD CONSTRAINT series_genero_check CHECK (genero IN ('ACAO', 'AVENTURA', 'ROMANCE', 'COMEDIA', 'DRAMA', 'CRIME', 'TERROR', 'SUSPENSE', 'CURTA', 'HORROR', 'THRILLER', 'ANIMACAO', 'OUTRA'));