Ola Eduardo.
Tudo bem?
Esse erro está relacionado à configuração do banco de dados H2 no modo "em memória" (mem:products).
Quando você usa a URL jdbc:h2:mem:products, o banco de dados é criado em memória, o que significa que ele desaparece assim que a aplicação é encerrada.
Além disso, a mensagem de erro sugere que o banco de dados não foi encontrado, provavelmente porque ele ainda não foi criado ou a configuração está tentando acessar um banco inexistente.
No modo em memória (mem), o banco de dados é criado apenas enquanto a aplicação está em execução.
O erro pode acontecer se o banco de dados não estiver sendo inicializado corretamente ou se você estiver tentando acessá-lo antes de ele ser criado.
Tente alterar a URL para jdbc:h2:mem:products;DB_CLOSE_DELAY=-1 (isso garante que o banco de dados em memória não seja fechado automaticamente quando a conexão for encerrada):
datasource:
url: jdbc:h2:mem:products;DB_CLOSE_DELAY=-1
driver-class-name: org.h2.Driver
username: sa
password: 123
Verifique se o console H2 está habilitado corretamente.
A URL de acesso ao console H2 é configurada em h2.console.path, que neste caso está como /h2-console.
Certifique-se de que você pode acessar o console na URL correta, como:
http://localhost:8080/h2-console
No console H2, você deve usar a URL jdbc:\h2:\mem:products (ou a URL correspondente que você configurou).
Se o problema continuar, você pode tentar usar um banco de dados em disco para evitar perder dados quando a aplicação for encerrada.
Isso pode ser feito alterando a URL para um arquivo físico, por exemplo:
datasource:
url: jdbc:h2:file:./data/products;DB_CLOSE_DELAY=-1
driver-class-name: org.h2.Driver
username: sa
password: 123
Isso vai criar o banco de dados em um arquivo chamado products dentro do diretório ./data.
Se você realmente precisa da criação dinâmica do banco de dados em ambientes mais flexíveis (e não estiver em produção), você pode tentar permitir a criação do banco de dados remotamente, mas isso não é recomendado em ambientes de produção por questões de segurança.
Adicione a seguinte configuração ao seu application.yml:
spring:
datasource:
url: jdbc:h2:mem:products;DB_CLOSE_DELAY=-1;AUTO_SERVER=TRUE
Isso permite que o banco de dados seja criado de forma remota, caso ele não exista.
Se você ainda não estiver conseguindo acessar o banco de dados, tente usar o H2 Console (http://localhost:8080/h2-console) e forneça as configurações corretas (URL, usuário e senha) para se conectar ao banco em memória.
Testa ai as possibilidades e me avise os resultados.
Bons estudos.