Я пытаюсь создать базу данных H2 в моем проекте Spring Boot, когда запускаю тест с огурцом.
У меня в application.yml есть вот такое:
booking:
datasource:
username: sa
password:
url: jdbc:h2:mem:bookingdb;DATABASE_TO_UPPER=false;DB_CLOSE_DELAY=-1
driver-class-name: org.h2.Driver
Мой тест на огурец хранится в моем пакете Огурец в папке SRC / acceptTest / Java. И приведенный ниже файл data.sql хранится в папке src / acceptTest / ресурсы:
CREATE TABLE tlink (
link_id int,
ext_id varchar(255),
address_id varchar(255),
client_id varchar(255),
instance varchar(255),
source varchar(255),
timestamp datetime2
);
INSERT INTO TLINK(link_id, ext_id, address_id, client_id, instance, source, timestamp) VALUES(13582,'0000059811','3037260','0000059811','1','1', '2018-08-22 15:13:34');
Когда я запускаю класс бегуна, тесты выполняются, но база данных не создается.
Ниже приведены некоторые журналы:
Caused by: org.hibernate.exception.SQLGrammarException: could not prepare statement
Caused by: org.h2.jdbc.JdbcSQLException: Table "tclientlink" not found; SQL statement:
Оператор CREATE в data.sql, похоже, не используется в моем коде. Почему это могло происходить?
В этом нет никакого смысла. `java.net.ConnectException: Превышено время ожидания подключения: подключение` означает, что ваша строка подключения неверна. Если ваша строка подключения неверна, ваша программа должна быть мертва, и вы не должны получать никаких дальнейших сообщений об ошибках о том, что таблица tlink не найдена.




В вашем сообщении в журнале указано, что у вас нет подключения к вашей базе данных. Сначала вам нужно установить в application.proprties соединение с вашим сервером, например. localhost / server, а затем, когда у вас будет соединение, таблица будет сопоставлена с вашим классом, который имеет аннотацию @Entity. Аннотация @Entity заключается в том, что все данные будут отображены на этот объект и все, что вы получите от этого класса Entity. Но сначала вам нужно создать соединение с сервером.
Перейдите по этой ссылке, чтобы создать подключение к H2 Think application.properties
https://dzone.com/articles/integrate-h2-database-in-your-spring-boot-applicat
Спасибо, у меня в тестовой папке есть файл application.yml. Я сделал что-то похожее на то, что предлагает ваша ссылка. Я отправлю его, когда смогу, сегодня же. Спасибо
Я обновил свой вопрос выше, добавив application.yml
1. Вам необходимо создать таблицу с помощью sql. @Entity - это просто отображение таблиц. Вы не создаете таблицу db с помощью @Entity. 2. Ваша вставка и создание выглядят нормально. У вас есть зависимость h2 в pom.xml? <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> Посмотри по этой ссылке springboottutorial.com/spring-boot-and-spring-jdbc-with-h2
В моих зависимостях build.gradle у меня testRuntime 'com.h2database:h2'
В моем application.yml есть 2 разные базы данных, которые должны указывать на экземпляр H2, поэтому этот сценарий сложнее любых руководств, которые я нашел в Интернете.
Я разделил свой sql на schema.sql и data.sql. Я могу войти в консоль H2, но таблица не создается с помощью кода.
Вы вызывали свой sql-скрипт? Попробуйте взглянуть на эту ссылку stackoverflow.com/questions/39280340/… в application.yml, установите ваш скрипт, который будет вызываться
Я думал, что как только вы запустите тесты, spring будет искать data.sql
Spring посмотрите на свой application.yml, и вам нужно определить, какой sql будет запускаться. В этом ответе указано, что вам нужно установить для sql-скрипта для вызова.
Позвольте нам продолжить обсуждение в чате.
Мне ваш SQL кажется прекрасным, поэтому я думаю, что код SQL даже не запускается.