Подтвердить что ты не робот

Проблема с INIT = RUNSCRIPT и относительными путями

Я использую соглашения maven для исходных путей (src/main src/test), и у меня есть мои sql-скрипты в src/main/resources/scripts.

Я хочу запустить приложение с памятью H2, и я бы хотел использовать URL-адрес jdbc для инициализации моего db:

database.url=jdbc:h2:mem:;INIT=RUNSCRIPT FROM 'src/main/resources/scripts/create.sql';

Моя проблема в том, что этот относительный путь (src/main/...) не работает, и что H2 не сработает, если команда init = runcript ничего не нацелена.

Кто-нибудь знает, какой путь я должен использовать, чтобы сделать эту работу?

Спасибо

4b9b3361

Ответ 1

Вы можете использовать следующий URL:
"jdbc:h2:mem:sample;INIT=RUNSCRIPT FROM 'classpath:scripts/create.sql'"

С помощью этого можно запустить script из пути к классам. Поэтому вы можете просто добавить src/main/resources/scripts или src/test/resources/scripts в свой проект maven (или что-то еще).

Ответ 2

Я предлагаю попробовать использовать абсолютный путь для стартеров, просто чтобы проверить, что все работает. Затем проверьте свой путь к классам. Например, bin/main/resources/scripts/create.sql, предполагая, что bin - это то, где ваши классы скомпилированы и находятся в вашем пути к классам.

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