Ошибка SQL не удается создать базу данных H2 с помощью тестов Cucumber в приложении Spring Boot

Я пытаюсь создать базу данных 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, похоже, не используется в моем коде. Почему это могло происходить?

Мне ваш SQL кажется прекрасным, поэтому я думаю, что код SQL даже не запускается.

Tim Biegeleisen 15.09.2018 11:09

В этом нет никакого смысла. `java.net.ConnectException: Превышено время ожидания подключения: подключение` означает, что ваша строка подключения неверна. Если ваша строка подключения неверна, ваша программа должна быть мертва, и вы не должны получать никаких дальнейших сообщений об ошибках о том, что таблица tlink не найдена.

Mike Nakis 15.09.2018 11:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
1 169
1

Ответы 1

В вашем сообщении в журнале указано, что у вас нет подключения к вашей базе данных. Сначала вам нужно установить в 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. Я сделал что-то похожее на то, что предлагает ваша ссылка. Я отправлю его, когда смогу, сегодня же. Спасибо

user9847788 15.09.2018 11:31

Я обновил свой вопрос выше, добавив application.yml

user9847788 16.09.2018 12:59

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

user2021515 17.09.2018 09:58

В моих зависимостях build.gradle у меня testRuntime 'com.h2database:h2'

user9847788 17.09.2018 10:58

В моем application.yml есть 2 разные базы данных, которые должны указывать на экземпляр H2, поэтому этот сценарий сложнее любых руководств, которые я нашел в Интернете.

user9847788 17.09.2018 10:59

Я разделил свой sql на schema.sql и data.sql. Я могу войти в консоль H2, но таблица не создается с помощью кода.

user9847788 17.09.2018 14:00

Вы вызывали свой sql-скрипт? Попробуйте взглянуть на эту ссылку stackoverflow.com/questions/39280340/… в application.yml, установите ваш скрипт, который будет вызываться

user2021515 17.09.2018 14:10

Я думал, что как только вы запустите тесты, spring будет искать data.sql

user9847788 17.09.2018 14:43

Spring посмотрите на свой application.yml, и вам нужно определить, какой sql будет запускаться. В этом ответе указано, что вам нужно установить для sql-скрипта для вызова.

user2021515 17.09.2018 14:59

Позвольте нам продолжить обсуждение в чате.

user2021515 17.09.2018 15:34

Другие вопросы по теме