Я новичок в Spring и начал следовать учебнику EazyBytes Udemy. Когда он начал говорить о том, как внедрить базу данных H2 в проект Spring Boot, я попытался применить это на практике.
В начале, после установки зависимости Maven базы данных H2, я не мог получить к ней доступ через консоль, потому что она постоянно говорила мне, что база данных не создана. Прочитав некоторые ответы о переполнении стека, я обнаружил, что БД больше не создается автоматически, и мне нужно перейти на более раннюю версию. Это то, что я сделал. Итак, мой pom.xml теперь выглядит так:
...
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.193</version>
<scope>runtime</scope>
</dependency>
...
Я также создал schema.sql на уровне application.properties:
CREATE TABLE IF NOT EXISTS `contact_msg` (
`contact_id` int AUTO_INCREMENT PRIMARY KEY,
`name` varchar(100) NOT NULL,
`mobile_num` varchar(10) NOT NULL,
`email` varchar(100) NOT NULL,
`subject` varchar(100) NOT NULL,
`message` varchar(500) NOT NULL,
`status` varchar(10) NOT NULL,
`created_at` TIMESTAMP NOT NULL,
`created_by` varchar(50) NOT NULL,
`updated_at` TIMESTAMP DEFAULT NULL,
`updated_by` varchar(50) DEFAULT NULL
);
Мой application.properties выглядит так:
# Some Basic Spring Boot Configurations
...
# H2 Database Config
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
При попытке доступа .../h2-console все работает. В разделе «URL-адрес JDBC» я ввел jdbc:h2:mem:testdb, но когда я нажимаю «Подключиться», я получаю следующее:
Как видите, я не вижу свою contact_msg таблицу, но в туториале, который я смотрю, лектор может видеть и расширять ее.
Я думал, что это может быть проблема с Spring Security, но я буквально пытался скопировать и вставить его собственные конфигурации, и никаких изменений не произошло.
В чем здесь может быть проблема?




Кажется, что этот ответ https://stackoverflow.com/a/65253359/14808001, связанный с тем, почему база данных не найдена, также устраняет проблему создания таблицы.
(хотя я не знаю, зачем мне нужен JDBC API, потому что я не делал никаких запросов к базе данных)
Я думаю, вам придется изменить свойство ddl-auto следующим образом:
spring.jpa.hibernate.ddl-auto=create-drop
Вы можете сделать это при первом запуске приложения, чтобы оно создало вашу схему, а в следующий раз вы можете вернуть ее в «обновление».