Я использую базу данных h2 для тестового примера и базу данных mysql в качестве основной БД. Могу ли я поддерживать миграцию по одному пролетному пути для обоих.
Я использую структуру Springboot.
приложение-mysql.properties:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/shipment-planning?useSsl=true
spring.datasource.username=root
spring.flyway.default-schema=shipment-planning
spring.flyway.enabled=true
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
spring.flyway.locations = h2/db/migration
приложение-h2.properties
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=sa
spring.flyway.enabled=true
spring.flyway.locations = h2/db/migration
одна из синтаксических ошибок, которые я получил при запуске с Mysql.properties
«У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, чтобы найти правильный синтаксис для использования рядом с «ТИП ДАННЫХ ТЕКСТ» в строке 2»
🤔 А знаете ли вы, что...
Java используется в большом количестве крупных корпоративных приложений и систем.
Не гарантируется, что используя разные базы данных, вы сможете использовать одни и те же скрипты.
Если ваши сценарии сложны, поскольку в них активно используются расширенные функции базы данных, такие как специальные индексы, табличные пространства, типы данных, ваши сценарии наверняка не смогут быть выполнены как в H2, так и в MySql.
Учитывая, что у вас есть три способа справиться с этим:
Это невозможно. Как только запросы станут сложными, вы столкнетесь с проблемами.
Вы можете разделить их по разным папкам и указать в своих тестах использование сценариев миграции в соответствии с поставщиком базы данных. У вас может быть папка для файлов миграции MySQL в /mysql и файлов h2 в /h2.
Использование другой базы данных для ваших тестов также является плохой практикой. Я рекомендую использовать тест-контейнеры, поскольку они позволят вам запускать докер-контейнеры во время ваших тестов. Это означает, что у вас может быть экземпляр mysql, который будет запускаться при запуске теста и закрываться после его завершения, что устраняет проблему, с которой вы сталкиваетесь в данный момент. преимущество наличия значимых тестов.