проблема с INIT = RUNSCRIPT и относительными путями - PullRequest
42 голосов
/ 20 декабря 2010

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

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

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

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

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

Спасибо

Ответы [ 2 ]

83 голосов
/ 13 декабря 2011

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

С этим можно запустить скрипт из classpath. Таким образом, вы можете просто поместить его src / main / resources / scripts или src / test / resources / scripts в ваш проект maven (или что-то еще).

2 голосов
/ 20 декабря 2010

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

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

...