3
respostas

[Projeto] Banco de dados h2 não popula

Oi, pessoal,

Fiz as configurações orientadas pelo instrutor no arquivo application.properties, incluindo a referente à atualização do Spring 2.5:

# datasource - configurações do banco de dados
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:alura-forum
spring.datasource.username=sa
spring.datasource.password=

# jpa
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.defer-datasource-initialization=true

# h2
# interface gráfica do h2
spring.h2.console.enabled=true
# endereço para acessar a interface de gerenciamento do h2, pelo navegador
spring.h2.console.path=/h2-console

e copiei o arquivo data.sql com os inserts:

 INSERT INTO USUARIO(nome, email, senha) VALUES('Aluno', 'aluno@email.com', '123456');

INSERT INTO CURSO(nome, categoria) VALUES('Spring Boot', 'Programação');
INSERT INTO CURSO(nome, categoria) VALUES('HTML5', 'Front-end');

INSERT INTO TOPICO(titulo, mensagem, data_criacao, status, autor_id, curso_id) VALUES('Dúvida', 'Erro ao criar projeto', '2019-05-05 17:05:13', 'NAO_RESPONDIDO', 1, 1);
INSERT INTO TOPICO(titulo, mensagem, data_criacao, status, autor_id, curso_id) VALUES('Dúvida2', 'Projeto não compila', '2021-06-08 21:30:00', 'NAO_RESPONDIDO', 1, 1);
INSERT INTO TOPICO(titulo, mensagem, data_criacao, status, autor_id, curso_id) VALUES('Dúvida3', 'Tag html', '2015-01-12 09:45:03', 'NAO_RESPONDIDO', 1, 2);

Consigo conectar com a interface gráfica do H2, mas ao executar as queries não é trazido nenhum dado:

print da tela do computador, mostrando a interface do h2 com o retorno de uma queryNo log não aparece nenhuma mensagem de erro, só o arquivo pom.xml que está com a tag sublinhada de vermelho, mas que aparentemente não impediu a aplicação de rodar:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Alguma ideia do que pode estar acontecendo?

3 respostas

Oi Alonso,

Aparentemente tudo ok. Mas no seu print do console do H2 acho que você conectou em outro banco.

Roda novamente a aplicação e entra na tela de login do h2 no browser, verificando se os dados de acesso estão conforme configurado no application.properties:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi, Rodrigo!

De fato, no console do H2 eu coloquei outra url justamente porque a jdbc:h2:mem:alura-forum dava este erro:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Na ocasião, procurando ajuda no fórum, encontrei uma moça com o mesmo problema (nesse link: https://cursos.alura.com.br/forum/topico-database-mem-testdb-not-found-either-pre-create-it-or-allow-remote-database-creation-215910 e ela solucionou trocando o "alura-forum" pela sequencia de caracteres que aparece no console toda vez que o servidor inicia, mostrando uma mensagem do tipo "Database available at 'jdbc:h2:mem:d01291ac-d484-4e73-a2d5-a93eaf1e6793". Por isso que minha url está com aquelas letras e números, porque só assim que consegui conectar.

Ah sim, isso foi outra mudança em versões do Spring Boot posteriores a versão utilizada no curso.

Você precisa adicionar mais essa propriedade para que o Spring não gere o nome do banco de maneira automática:

spring.datasource.generate-unique-name=false

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software