Spring Boot Profiles - запускайте sql-скрипт вместо ddl-auto - PullRequest
0 голосов
/ 12 октября 2018

Я настраиваю 3 профиля (dev / test / prod), работающих как по волшебству (новичок в java и весенней загрузке)

В моем профиле dev база данных генерируется с

hibernate.ddl-auto

workinотлично ... также с

.hibernate.hbm2ddl.import_files

ведьмой, которую я использую, чтобы заполнить базу данных test-data

в тестовой среде, я хотел бы вместо этого запустить скрипт, который устанавливаетдо БД из дампа .. чтобы больше походить на производство (сущность не соответствует БД по некоторым причинам)

, поэтому я попытался использовать:

datasource.data 

&& ||

datasource.schema

в разных комбинациях, с файлом:, префикс classpath .....

когда я делаю:

datasource.data=data.sql

он говорит:

'ServletContext resource [/data.sql]' is invalid: The specified resource does not exist

... переместил файл по кругу .... / src / main / src / main / resources / src / main / resources / META-INF .. все эти вещи

Я не понимаю, чтоэто означает "ServletContext" ........

Я отключил

hibernate.ddl-auto

, установив его в этом профиле в значение

и

hibernate.jpa.generate-ddl

в false, даже если он не нужен / не используется при установкеg ddl-auto

... в моем квесте "google-search" я наткнулся на посты 2014 года и был совершенно сбит с толку с тех пор, как с этого момента произошли ......

есть, я рассчитываю на это;) какое-то свойство, которое должно быть установлено на "runThisScript", но я прошел через документы ...... возможно, я что-то пропустил

кто-то может указать мне правильное направление?
спасибо!

thx @Blagoj за ваш быстрый ответ, ссылка помогла мне .. скрипт запускается путем установки ddl-auto для создания ... но он также генерируется из сущности ... какчтобы он не сделал этого, && запустил скрипт?

thx @luboskrnac за ваш совет!будет смотреть / использовать его!.. что меня беспокоит, так это то, что я должен сделать это неправильно / не очень хорошо с моей точки зрения ... в dev, чтобы соответствовать prod ..... надеялся сделать это правильно в dev и подтолкнуть к этому состоянию, как только ямог бы доказать, что это правильно;)

... хорошо, пока я закончил настройку среды тестирования вручную ... но постараюсь автоматизировать ее, как только узнаю больше ... я вижу, что всегда естьинструмент для закачиваемой задачи;)

1 Ответ

0 голосов
/ 12 октября 2018

Используйте инструмент переноса БД, такой как Flyway или Liquibase, для создания начальной схемы и для пошаговых миграций схемы БД.Теперь важный момент: делайте это одинаково в DEV и PROD env!В противном случае вы просите о неприятностях.

Исходная схема может быть сгенерирована с помощью Hibernate.spring.jpa.hibernate.ddl-auto=create создаст схему из вашей модели JPA + logging.level.org.hibernate.SQL=DEBUG увеличит команды SQL для создания этой схемы.Этот дамп SQL можно использовать в качестве исходного сценария миграции для Flyway или Liquibase.

Вы даже можете вставить образцы данных в PROD (если вы можете скрыть их за тестовой учетной записью).Чем вы можете запустить автоматическое тестирование на экземпляре PROD, что может быть полезно для проверки работы важных функций в PROD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...