H2 Console Cant см. Таблицы, созданные JAVA

Я загрузил консоль H2 из http://www.h2database.com/html/download.html
и я настроил URL-адрес в файле jdbc.properties
до jdbc:h2:c:/data/Messaging.

Я использую тот же URL-адрес в файле для подключения к базе данных, но я не вижу эти таблицы; Я могу видеть только информационную схему, и когда я пытаюсь select * from tables в ней, я тоже не вижу таблицы.

Кто-нибудь знает, что может быть неправильным?

Ответ 1

Основываясь на вашем вопросе, это не похоже на то, что вы стали жертвой этой конкретной ловушки, но этот поток помог мне решить проблему, поэтому я записываю решение здесь для потомков, так как это может помочь другим людям с та же проблема.

Я также обнаружил, что когда я попытался открыть свою базу данных с помощью консоли H2, я получил то, что оказалось пустой базой данных H2 (в основном, просто таблицей INFORMATION_SCHEMA). При двойной проверке, что я правильно получил имя базы данных (mydb.mv.db), я обнаружил, что консоль H2 создала второй файл базы данных mydb.mv.db.mv.db. Одд.

Оказывается, что Консоль H2 ожидает, что вы должны опустить суффикс .mv.db из имени файла. Поскольку я этого не делал, он искал mydb.mv.db.mv.db. Изменение строки JDBC на jdbc:h2:mydb решило проблему, и я смог открыть файл из консоли H2.

Ответ 2

Одна хитрость в том, что консоль H2 не выдаст вам ошибку, если вы попытаетесь подключиться к несуществующему URL JDBC. Вместо этого он создаст новую базу данных по этому URL! Чтобы подключиться к БД в памяти, используйте этот URL JDBC (http://localhost: 8080/h2-console - консоль по умолчанию):

jdbc:h2:mem:testdb

Если вы введете что-то вроде jdbc: h2: ~/test, то файл test.mv будет создан в вашем домашнем каталоге. Но ваше приложение все равно будет использовать базу данных в памяти.

Консоль доступна, если у вас есть зависимость h2 в вашем pom, а также зависимость средств разработки Spring. Если у вас нет зависимости от инструментов, вы также можете увидеть ее, имея зависимость h2 и добавив в файл application.properties следующее:

spring.h2.console.enabled=true  #not needed if you have spring-boot-devtools dependency

Если вы хотите, чтобы БД была в виде файла, а не в памяти, добавьте следующее в application.properties:

spring.datasource.url=jdbc:h2:~/test_db  #You will see the file in your home directory.

H2 не предназначен для постоянных данных, но если вы хотите сохранить для целей тестирования, добавьте:

spring.jpa.hibernate.ddl-auto = update

Затем запустите приложение и на консоли используйте этот URL JDBC:

jdbc:h2:~/test_db

Если вам интересно, у меня есть только 1 запись в application.properties (для файла базы данных), и вот мои зависимости:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

Ответ 4

Вот как вы включаете базу данных разрешения памяти, используя модуль h2. Вам необходимо обеспечить следующее

  1. У вас был класс с аннотациями @Entity.
  2. Вам нужно включить следующее в файле application.properties spring.h2.console.enabled=true
  3. Запустите Spring Boot и введите следующий URL localhost:8080/h2-console
  4. Это покажет экран подключения. Введите следующие изменения в JDBC URL:jdbc:h2:mem:testdb 5. Нажмите кнопку подключения

Сала

Ответ 5

Я использовал ниже, и я вижу, что моя таблица создана.


spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE
spring.h2.console.enabled=true
spring.h2.console.path=/h2console
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

Ответ 6

Вы также можете избежать этой проблемы, используя ту же самую версию между консолью H2 и кодом Java.

Вот как я решил эту же проблему здесь.

Ответ 7

Добавьте аннотацию @EntityScan ("packageName") в основной класс

Ответ 8

Если кто-то использует Spring boot и у вас возникла эта проблема, это должно быть полезно для вас, так как у меня была такая же проблема. Ответ от MattC выше (отвечено 27 апреля '18 в 21:03) помог мне понять, как посмотреть мою таблицу в БД в памяти. В основном просто нужно изменить URL JDBC в консоли H2. Благодарю.