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

Error starting ApplicationContext

Olá pessoal! Não estou conseguindo resolver este erro quando busco a série. Obs: outras séries deu certo não deu erro e gravou no banco de dados e tudo mais.

1 - Buscar séries
2 - Buscar episódios
3 - Listar séries buscadas
4 - Buscar série por título
5 - Buscar séries por ator
6 - Top 5 séries
7 - Buscar séries por categoria
8 - Filtrar séries por número de temporadas e avaliação
9 - Buscar episódios por trecho

0 - Sair

1
Digite o nome da série para a busca:
Lost
Hibernate: insert into series (atores,avaliacao,genero,poster,sinopse,titulo,total_temporadas) values (?,?,?,?,?,?,?)
2024-04-29T14:56:42.227-03:00  WARN 124 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 23514
2024-04-29T14:56:42.228-03:00 ERROR 124 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERRO: a nova linha da relação "series" viola a restrição de verificação "series_genero_check"
  Detalhe: Registro que falhou contém (23, Jorge Garcia, Josh Holloway, Yunjin Kim, 8.3, AVENTURA, https://m.media-amazon.com/images/M/MV5BNzhlY2E5NDUtYjJjYy00ODg3..., Os sobreviventes de um acidente de avião são forçados a traba..., Lost, 6).
2024-04-29T14:56:42.281-03:00  INFO 124 --- [           main] .s.b.a.l.ConditionEvaluationReportLogger : 

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2024-04-29T14:56:42.438-03:00 ERROR 124 --- [           main] o.s.boot.SpringApplication               : Application run failed

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 (23, Jorge Garcia, Josh Holloway, Yunjin Kim, 8.3, AVENTURA, https://m.media-amazon.com/images/M/MV5BNzhlY2E5NDUtYjJjYy00ODg3..., Os sobreviventes de um acidente de avião são forçados a traba..., Lost, 6).] [insert into series (atores,avaliacao,genero,poster,sinopse,titulo,total_temporadas) values (?,?,?,?,?,?,?)]; SQL [insert into series (atores,avaliacao,genero,poster,sinopse,titulo,total_temporadas) values (?,?,?,?,?,?,?)]; constraint [null]
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:290) ~[spring-orm-6.1.2.jar:6.1.2]
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:241) ~[spring-orm-6.1.2.jar:6.1.2]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550) ~[spring-orm-6.1.2.jar:6.1.2]
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-6.1.2.jar:6.1.2]
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335) ~[spring-tx-6.1.2.jar:6.1.2]
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-6.1.2.jar:6.1.2]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.2.jar:6.1.2]
    at 
2 respostas

Olá, Flavio! Tudo bem?

O erro sugere que o valor inserido no campo genero para a série "Lost" não está conforme as restrições definidas para essa coluna no banco de dados.

A mensagem de erro "ERRO: a nova linha da relação "series" viola a restrição de verificação "series_genero_check" indica que o valor "AVENTURA" pode não estar permitido pela restrição de verificação. É possível que a restrição esteja esperando valores específicos ou um formato particular que não foi seguido.

Aqui estão algumas ações que você pode tomar para resolver esse problema:

  1. Verifique as Restrições da Coluna genero: acesse o banco de dados e verifique as restrições definidas para a coluna genero na tabela series. Isso pode ser feito usando um comando SQL como:

    SELECT column_name, constraint_name, constraint_type
    FROM information_schema.constraint_column_usage
    WHERE table_name = 'series';
    

    Isso te ajudará a entender quais valores são aceitos para o campo genero.

  2. Ajuste o Valor do Gênero: se o valor "AVENTURA" realmente não estiver de acordo com as restrições, você pode ajustar o valor para um que seja aceito. Por exemplo, se a restrição permitir apenas valores como "Ação", "Drama", "Comédia", etc., você deverá usar um desses valores aceitáveis.

  3. Atualize a Restrição de Verificação: se você tiver controle sobre o schema do banco de dados e quiser permitir "AVENTURA" como um valor válido, você pode alterar a restrição de verificação para incluir esse valor. Isso pode ser feito com um comando SQL como:

    ALTER TABLE series DROP CONSTRAINT series_genero_check;
    ALTER TABLE series ADD CONSTRAINT series_genero_check CHECK (genero IN ('Ação', 'Drama', 'Comédia', 'AVENTURA'));
    

Espero que essas sugestões te ajudem a resolver o problema, caso nenhuma delas resolva peço que compartilhe comigo todo o seu código para que eu realize testes.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.
solução!

Olá Armano, obrigado por responder! Eu havia criado o genero Aventura mas só funcionou quando dropei as tabelas e executei novamente a aplicação.