Estou simplesmente tentando ver o conteúdo do banco de dados H2 para um banco de dados H2 incorporado que o spring-boot cria quando não especifico nada em meu application.properties e começo com mvn spring: run. Eu posso ver o Hibernate JPA criando as tabelas, mas se eu tentar acessar o console h2 na URL abaixo, o banco de dados não terá tabelas.
http://localhost:8080/console/
Vejo sugestões como esta: Ver o conteúdo do banco de dados H2 incorporado iniciado por Spring
Mas não sei onde colocar o XML sugerido no spring-boot e, mesmo que o fizesse, não quero que o h2console esteja mais disponível quando um banco de dados externo for configurado, então é mais provável que eu precise lidar com isso com algum tipo de código condicional (ou talvez apenas permitir que o spring trate-o automaticamente no caso mais ideal, onde eu apenas incluo H2 quando um perfil de maven é ativado).
Alguém tem algum código de amostra mostrando como fazer o console H2 funcionar na inicialização (e também a maneira de descobrir o que está usando a string de conexão jdbc que spring está usando)?
Respostas:
Foi assim que fiz o console H2 funcionar em boot com H2. Não tenho certeza se isso está certo, mas como ninguém mais ofereceu uma solução, vou sugerir que essa é a melhor maneira de fazê-lo.
No meu caso, escolhi um nome específico para o banco de dados para que tivesse algo para inserir ao iniciar o console H2 (neste caso, "AZ"). Acho que tudo isso é necessário, embora pareça que deixar de fora a plataforma spring.jpa.database não prejudica nada.
Em application.properties:
Em Application.java (ou alguma configuração):
Em seguida, você pode acessar o console H2 em {server} / console /. Digite isso como o URL JDBC: jdbc: h2: mem: AZ
fonte
new WebServlet()
me dê problemas. Qual classe isso está importando para você? Ele está puxando javax.servlet.annotation.WebServlet para mim como a única opção e é apenas uma interface.jdbc:h2:mem:testdb
com um nome de usuário e uma senha em branco. localhost: 8082 funciona com esta configuração.A partir do Spring Boot
1.3.0.M3
, o console H2 pode ser configurado automaticamente.Os pré-requisitos são:
Mesmo se você não usar Spring Boot Dev Tools, você ainda pode configurar automaticamente o console definindo
spring.h2.console.enabled
paratrue
Confira esta parte da documentação para todos os detalhes.
Observe que, ao configurar desta forma, o console pode ser acessado em: http: // localhost: 8080 / h2-console /
fonte
spring-boot-starter-web
como uma dependênciajdbc:h2:mem:testdb
é para o URL de conexão, não para o URL onde o console está acessívelEu encontrei um bom tutorial sobre este tópico:
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
Basicamente, o URL JDBC correto para mim era:
jdbc:h2:mem:testdb
fonte
De http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
H2 Web Console (H2ConsoleProperties):
Adicionar as duas linhas acima ao meu arquivo application.properties foi o suficiente para acessar o console da web do banco de dados H2, usando o nome de usuário (sa) e a senha padrão (vazio, como em não digite uma senha quando a ui solicitar).
fonte
spring.h2.console.enabled=true
? False irá desativá-lo. Espring.h2.console.path=/h2-console
é redundante porque/h2-console
é o caminho padrão do Spring Boot. Conforme a documentação "Por padrão, o console estará disponível em / h2-console. Você pode personalizar o caminho do console usando a propriedade spring.h2.console.path." Mais detalhes aqui docs.spring.io/spring-boot/docs/current/reference/html/…Uma resposta semelhante com o guia Passo a Passo.
pom.xml
oubuild.gradle
Maven
Gradle
http://localhost:8080/h2-console/
jdbc:h2:mem:testdb
como URL JDBCfonte
Eu tinha apenas propriedades abaixo em /resources/application.properties. Depois de executar o Spring Boot, usando este URL ( http: // localhost: 8080 / h2-console / ), a tabela no console H2 ficou visível e lida para visualizar os dados da tabela, você também pode executar comandos SQL simples. Uma coisa, em seu código java, ao buscar dados, os nomes das colunas são maiúsculas, embora schema.sql esteja usando nomes em minúsculas :)
fonte
Para Spring Boot 2.1.1 direto do Spring Initialzr:
O padrão com devtools é http://127.0.0.1:8080/h2-console/
Sem devtools - você precisa defini-lo nas propriedades:
spring.h2.console.enabled=true spring.h2.console.path=/h2-console
Assim que chegar lá - defina o URL JDBC: jdbc: h2: mem: testdb (o padrão não funcionará)
fonte
Se você usar as ferramentas de desenvolvedor do Spring Boot, ele vem com o Console H2 habilitado por padrão. Ele pode ser acessado em
/h2-console
/. Na interface de login, paraJDBC URL
valor de uso de entradajdbc:h2:mem:testdb
. Preste atenção aomem
barbante.Se você não usar as ferramentas de desenvolvedor do Spring Boot, poderá habilitar o console
application.properties
usandospring.h2.console.enabled=true
. Isso habilitará o console em/h2-console
. Se você deseja alterar o URL, pode adicionar outra entrada comspring.h2.console.path=my_console_path
.O nome do esquema padrão é
testdb
.Mais detalhes na documentação do Spring Boot .
fonte
jdbc:h2:mem:testdb
definido como url jdbc padrão? Passei muito tempo pensando onde minhas entidades jpa deram erradoVerifique spring application.properties
aqui testdbédefinido o banco de dados Certifique-se de que o console h2 tem o mesmo valor enquanto se conecta de outra forma ele se conectará ao banco de dados padrão
fonte
Para obter as tabelas, tudo o que você precisa fazer é criar 2 arquivos sql schema.sql (para a criação da tabela) e data.sql (dados para as tabelas criadas). Esses arquivos devem ser colocados na pasta src / main / resources. O Spring boot auto detecta-os e cuida do resto durante a execução.
Se estiver usando mais de 2 DB em seu projeto, certifique-se de usar arquivos específicos como (schema-h2.sql - para h2 DB, schema-oracle.sql - para Oracle DB). O mesmo a ser seguido para data.sql também.
Certifique-se também de eliminar as tabelas adicionando a instrução drop table em schema.sql como primeira instrução. Para evitar o acréscimo de registros duplicados.
O link para a bota de mola está aqui.
Meu application.properties é o seguinte.
Você pode seguir as etapas no link abaixo.
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
fonte
Descobri que com o spring boot 2.0.2.RELEASE, configurar spring-boot-starter-data-jpa e com.h2database no arquivo POM não é apenas o suficiente para ter o console H2 funcionando. Você deve configurar spring-boot-devtools conforme abaixo. Opcionalmente, você pode seguir as instruções de Aaron Zeckoski nesta postagem
fonte
Use jdbc: h2: mem: testdb como seu caminho ao fazer login no console H2.
Obviamente, se você alterou as propriedades do Spring Boot, sua fonte de dados pode ser diferente, mas parece que você está lutando para encontrar o padrão. Isso é tudo que há para fazer! Você verá seu esquema após fazer login no H2.
fonte
Eu cometi um erro muito estúpido quando tive esse mesmo problema. Eu adicionei H2 DB para executar casos de teste de unidade e, portanto, configurei
scope
comotest
empom.xml
. Ao executar o aplicativo usandomvn spring:run
eu removi oscope
e ele funciona bem agora.fonte