Если вы не читали приведенный выше контент, вы можете прочитать его, если вам интересно. В приведенной выше статье с использованием jdbctemplate таблица пользователя в основном добавляется, удаляется, модифицируется и проверяется через JDBctemplate, предоставленную весной. При реализации этого примера мы заранее создали таблицу пользователей в MySQL. Мы часто используем процесс создания таблиц, когда фактически разрабатываем систему, но всегда была проблема. Поскольку программная версия системы хорошо управляется через GIT, а структура базы данных - нет. Даже если мы версируют операторы через GIT, как управлять версией в базах данных каждой среды? Далее мы узнаем, как использовать Flyway для управления версиями базы данных в Spring Boot через эту статью.
Введение в пролету
Flayway - это простой контроллер версий базы данных с открытым исходным кодом (соглашение больше, чем конфигурация), который в основном обеспечивает мигрирование, чистку, информацию, проверку, базовую линию, ремонт и другие команды. Он поддерживает методы SQL (PL/SQL, T-SQL) и Java, поддерживает клиентов командной строки и т. Д., А также предоставляет серию поддержки подключаемых модулей (Maven, Gradle, SBT, ANT и т. Д.).
Официальный веб -сайт: https://flywaydb.org/
В этой статье не слишком много представляет собственные функции Flyway. Читатели могут получить больше информации, читая официальные документы или используя поисковые системы. Ниже мы подробно рассмотрим приложение в приложении Spring Boot, как использовать Flyway для создания баз данных и непоследовательно проверить структуру.
Попробуйте это
Ниже мы можем завершить обработку, используя пример в статье, используя JDBctemplate. Читатели также могут использовать любой проект, связанный с доступом к данным для эксперимента со следующим контентом:
Первый шаг - добавить зависимость Flyway в pom.xml:
<dependency> <groupid> org.flywaydb </groupid> <artifactid> Flyway-core </artifactid> <sersive> 5.0.3 </version> </dependent>
Второй шаг - создать сценарий SQL, вынесенный версией в соответствии со спецификациями Flyway.
Создайте каталог DB в рамках каталога SRC/Main/Resources проекта
Создать версию SQL Script v1__base_version.sql в каталоге DB
Drop Table, если существует пользователь; создать таблицу `user` (` id` bigint (20) не null auto_increment Comment 'Primary Key', «Имя» VARCHAR (20), а не NULL Comment «Имя», `age` int (5) Defaul Null Comment 'Age', первичный ключ (` id`)) engine = innodb default charset = UTF8MB4;
Третий шаг - настройка местоположения сценария SQL, который будет загружен в файл Application.properties. Результат, созданный на втором этапе, заключается в следующем:
Flyway.Locations = ClassPath:/db
Четвертый шаг - выполнить модульные тестовые приложения. В настоящее время мы можем увидеть следующую информацию в журнале:
Info 82441 --- [Main] ofcore.internal.util.versionprinter: Flayway Community Edition 5.0.3 от BoxFuseInfo 82441 --- [Main] ofcinternal.database.databasefactory: база данных: JDBC: MySQL: // localhost: 3306/test (mysql 5.7)-841-841-841--// Mocalhost: 3306/test (mysql 5.7). ofcore.internal.command.dbvalidate: успешно подтвержденная 1 миграция (время исполнения 00: 00.022S) Информация 82441 --- [main] ofcore.internal.command.dbvalidate: успешно подтвержденная 1 миграция (время исполнения 00: 00.022S). Таблица истории схемы: `test`.`flyway_schema_history`info 82441 --- [main] ofcore.internal.command.dbmigrate: текущая версия схемы` test`: << Пустая схема >> info 82441 --- 82441 --- [main] ofcore.internal.sqlscript.sqlscript: db: неизвестная таблица 'test.user' (SQL State: 42S02-Код ошибки: 1051) Информация 82441 --- [Main] OfCore.Internal.command.dbmigrate: Успешно применительно 1 миграционный 00: 00.128s)
Перелетели контролируют, что необходимо запустить скрипт версии для инициализации базы данных, поэтому он выполняет скрипт v1__base_version.sql, создавая таким образом таблицу пользователя, который позволяет пройти серию модульных тестов (CRUD на таблице пользователя).
На пятом шаге мы можем продолжать выполнять модульный тест, и в настоящее время мы обнаружим, что выходной выход отличается от ранее:
Информация 83150 --- [Main] ofcore.internal.util.versionPrinter: Elway Community Edition 5.0.3 от BoxFuseInfo 83150 --- [Main] ofcinternal.database.databaseFactory: база данных: JDBC: MySQL: // localhost: 3306/test (mysql 5.7). ofcore.internal.command.dbvalidate: успешно подтвержденная 1 миграция (время исполнения 00: 00.031S) Информация 83150 --- [main] ofcore.internal.command.dbvalidat Версия схемы `test`: 1info 83150 --- [main] ofcore.internal.command.dbmigrate: Schema` test` обновлена. Никакой миграции не требуется.
Поскольку скрипт инициализации был выполнен на четвертом шаге, на этот раз выполнение не выполнило скрипт v1__base_version.sql, чтобы восстановить таблицу пользователя.
На шестом этапе мы можем попытаться изменить длину поля имени в скрипте v1__base_version.sql, а затем запустить модульный тест, мы можем получить следующую ошибку:
ОШИБКА 83791 --- [MANIC] OSBOOT.SPRINGAPPLICATION: Запуск приложения Faileorg.springframework.beans.factory.beancreationException: Ошибка Создание фасоли с именем 'FlaywayInitializer' DEFINE в Class Path Resource [Org/Springworkwork/Boot/AutoConfigure/Flayway/Flywayautoconfiguration $ FlaywayConfigure. неуспешный; Вложенное исключение-org.flywaydb.core.api.flywayexception: проверка неудачная: несоответствие проверки миграции для миграционной версии 1-> Применительно к базе данных: 466264992-> Разрешено локально: -270269434
Из -за изменений в сценарии инициализации не удалась. Считается, что текущий скрипт v1__base_version.sql отличается от последнего выполненного контента, вызвав ошибку и завершает программу, чтобы избежать более серьезных повреждений структуры данных.
Суммировать
До сих пор содержание этой статьи подошло к концу. Из -за продолжительности поста в блоге я не много говорил об использовании пролета более подробно. Эта статья в основном используется в качестве ступени, чтобы помочь и направлять людей или команды, которые используют Spring Boot, чтобы добиться большего успеха в контроле версий базы данных. Что касается более подробных заявлений, пожалуйста, прочитайте официальные документы для справки и обучения.
Код этой статьи: github: https://github.com/dyc87112/springboot-learning/
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.