1
resposta

[Dúvida] dúvida sobre o banco de dados h2

não consiho acessar o banco de dados h2 aparece:

Database "mem:products" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-224] 90149/90149 (Help)

essas foram as config do banco no application.yml:
spring:
application:
name: API Products

datasource:
url: jdbc:h2:mem:products
driver-class-name: org.h2.Driver
username: sa
password: 123

jpa:
database-platform: org.hibernate.dialect.H2Dialect
hibernate:
ddl-auto: update
show-sql: true

h2:
console:
enabled: true
path: /h2-console

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

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.