4
respostas

Erro ao recriar tabela no banco de dados;

boa noite pessoal, estou utilizando o mysql como meu banco de dados. Até o momento estava com minhas tabelas criadas, porém tive um erro e pesquisei aqui pelo fórum e a indicação do problema era que eu tinha esquecido de criar a tabela Episódio com o strategy na anotação (@GeneratedValue(strategy = GenerationType.IDENTITY)). A solução era apagar e recriar a base 'screenmatch_series'. Assim eu fiz, porém quando rodo a aplicação a única tabela que é criada é a tabela de séries, alguém sabe o por que?

vou deixar o link do meu repositório para melhor avaliaçã: https://github.com/eduardaGuerra44/Screenmatch-2.0

4 respostas

Oi Maria! Tudo bem?

Na sua classe Episodio, você usou a anotação @Table com o parâmetro schema. Porém, para que a tabela seja criada com o nome correto, o parâmetro deve ser name. O schema apenas diz em qual banco de dados devemos salvar a tabela. Acredito que mudando isso, sua tabela de episódios vai ser criada normalmente. :)

Espero ter ajudado! Abraços e bons estudos!

Eu tinha esquecido de atualizar o repositório, mesmo com o parâmetro "name", não foi criada a tabela. Tentei fazer também com @Table(name = "episodios", schema = "screenmatch_series") ;(

alguém poderia me ajudar?

Olá, Maria.

Provavelmente isso está acontecendo porque no arquivo main/resources/application.properties o atributo spring.jpa.hibernate.ddl-auto está com o valor update. Isso quer dizer que, mesmo que você pare a aplicação e inicie novamente, os dados das tabelas não serão apagados e nem as tabelas em si. Qualquer alteração que você fizer na estrutura/configuração da tabela não vai ser refletida no banco de dados. Sendo assim, você tem duas opções:

1: Clicar com o botão direito na tabela dentro do pgAdmin, deletar a tabela e rodar a aplicação de novo. Isso vai criar a tabela novamente. 2: Alterar o atributo spring.jpa.hibernate.ddl-auto para create-drop. Fazendo isso, toda vez que você rodar a aplicação as tabelas serão criadas novamente.