إذا لم تكن قد قرأت المحتوى أعلاه ، فيمكنك قراءته إذا كنت مهتمًا. في المقالة أعلاه باستخدام JDBCtemplate ، تتم إضافة جدول المستخدم بشكل رئيسي وحذفه وتعديله وفحصه من خلال JDBCTEMPLATE المقدمة بحلول الربيع. عند تنفيذ هذا المثال ، أنشأنا جدول المستخدم في MySQL مقدمًا. غالبًا ما نستخدم عملية إنشاء جداول عند تطوير النظام فعليًا ، ولكن كانت هناك مشكلة دائمًا. نظرًا لأن إصدار البرنامج من النظام يتم التحكم فيه جيدًا من خلال GIT ، ولا يتمثل بنية قاعدة البيانات. حتى لو قمنا بإصدار بيانات من خلال GIT ، كيفية إدارة الإصدار في قواعد البيانات لكل بيئة؟ بعد ذلك ، سوف نتعلم كيفية استخدام Flyway لإدارة إصدارات قاعدة البيانات في SPRING BOOT من خلال هذه المقالة.
مقدمة إلى Flyway
Flyway عبارة عن وحدة تحكم إصدار قاعدة بيانات مفتوحة المصدر بسيطة (الاتفاقية أكبر من التكوين) ، والتي توفر بشكل أساسي الترحيل والنظيف والمعلومات والتحقق من صحة أوامر الإصلاح والأوامر الأخرى. وهو يدعم أساليب SQL (PL/SQL ، T-SQL) و Java ، ويدعم عملاء سطر الأوامر ، وما إلى ذلك ، ويوفر أيضًا سلسلة من دعم المكونات (Maven ، Gradle ، SBT ، ANT ، إلخ).
الموقع الرسمي: https://flywaydb.org/
لا تقدم هذه المقالة وظائف Flyway الخاصة. يمكن للقراء الحصول على مزيد من المعلومات عن طريق قراءة المستندات الرسمية أو استخدام محركات البحث. أدناه سوف نتحدث عن التطبيق في تطبيق SPRING Boot بالتفصيل ، وكيفية استخدام Flyway لإنشاء قواعد البيانات والتحقق من الهيكل بشكل غير متسق.
جربها
أدناه يمكننا إكمال المعالجة باستخدام المثال في المقالة باستخدام JDBCtemplate. يمكن للقراء أيضًا استخدام أي مشروع يتعلق بالوصول إلى البيانات إلى التجربة مع المحتوى التالي:
الخطوة الأولى هي إضافة تبعية Flyway في pom.xml:
<Rependency> <roupend> org.flywaydb </rougeid> <StifactId> flyway-core </stifactid> <الإصدار> 5.0.3 </الإصدار> </التبعية>
والخطوة الثانية هي إنشاء نص SQL من إصدار وفقًا لمواصفات Flyway.
قم بإنشاء دليل DB ضمن دليل SRC/Main/Resources للمشروع
إنشاء إصدار SQL Script v1__base_version.sql في دليل DB
جدول إسقاط في حالة وجود مستخدم ؛ قم بإنشاء جدول `user` (`id` bigint (20) وليس التعليق auto_increment null" المفتاح الأساسي "،` name` varchar (20) وليس التعليق الخالي من "end` end` int (5) التعليق الفارغ '
الخطوة الثالثة هي تكوين موقع البرنامج النصي SQL ليتم تحميله في ملف Application.Properties. النتيجة التي تم إنشاؤها في الخطوة الثانية هي كما يلي:
flyway.locations = classpath:/db
الخطوة الرابعة هي تنفيذ اختبار Applicationts. في هذا الوقت ، يمكننا رؤية المعلومات التالية في السجل:
INFO 82441 --- [MAIN] OFCORE.INTERNAL.UTIL.VersionPrinter: Flyway Community Edition 5.0.3 by Boxfuseinfo 82441 --- [Main] Ofcinternal.database.databasefactory: database: jdbc: // localhost: 3306/test (mysql) Ofcore.Internal.Command.dbvalidate: تم التحقق من صحته بنجاح 1 (وقت التنفيذ 00: 00.022S) معلومات 82441 --- [Main] Ofcore.Internal.Command.dbvalidate: تم التحقق من صحة بنجاح 1 (وقت التنفيذ 00: 00.022s) info جدول تاريخ المخطط: `test`.`flyway_schema_history`info 82441 --- [main] ofcore.internal.command.dbmmrate: الإصدار الحالي من schema` test`: << schema >> info 82441 --- 82441 --- [MAIN] OFCORE.INTERNAL.SQLSCRIPT.SQLSCRIPT: DB: جدول غير معروف "Test.user" (SQL State: 42S02-رمز الخطأ: 1051) info 82441 --- 00: 00.128s)
يراقب Flyway أنه من الضروري تشغيل برنامج نصي للإصدار لتهيئة قاعدة البيانات ، لذلك يقوم بتنفيذ البرنامج النصي V1__Base_Version.SQL ، وبالتالي إنشاء جدول المستخدم ، والذي يسمح بسلسلة من اختبارات الوحدة (عمليات CRUD على جدول المستخدم) لتمريرها.
في الخطوة الخامسة ، يمكننا الاستمرار في تنفيذ اختبار الوحدة ، وفي هذا الوقت سنجد أن إخراج السجل يختلف عن ما قبل:
INFO 83150 --- [MAIN] OFCORE.INTERNAL.UTIL.VersionPrinter: Flyway Community Edition 5.0.3 by Boxfuseinfo 83150 --- [Main] Ofcinternal.Database.DatabaseFactory: Database: JDBC: // Mysql: // localhost: 3306/test (mysql 5.7) inf. Ofcore.Internal.Command.dbvalidate: تم التحقق من صحته بنجاح 1 (وقت التنفيذ 00: 00.031S) info 83150 --- الإصدار الحالي من المخطط `test`: 1info 83150 --- [main] ofcore.internal.command.dbmigrate: Schema` test` محدث. لا هجرة ضرورية.
منذ تنفيذ البرنامج النصي للتهيئة في الخطوة الرابعة ، لم يتم تنفيذ التنفيذ هذه المرة هذا البرنامج النصي v1__base_version.sql لإعادة بناء جدول المستخدم.
في الخطوة السادسة ، يمكننا محاولة تعديل طول حقل الاسم في البرنامج النصي v1__base_version.sql ، ثم تشغيل اختبار الوحدة ، يمكننا الحصول على الخطأ التالي:
خطأ 83791 --- [MAIN] OSBOOT.SPRINGAPPLICATION: Application Startup FAILLERG.SPRINGFRAMEWORD فشلت الطريقة ؛ الاستثناء المتداخل هو org.flywaydb.core.api.flywayexception: فشل التحقق من صحة: الاختبارات الهجرة عدم تطابق للترحيل 1-> المطبق على قاعدة البيانات: 466264992-> تم حلها محليًا: -270269434
بسبب التغييرات في البرنامج النصي للتهيئة ، فشل التحقق من الممر. يُعتقد أن البرنامج النصي الحالي V1__Base_Version.SQL يختلف عن آخر محتوى تم تنفيذه ، مما يؤدي إلى حدوث خطأ وإنهاء البرنامج لتجنب التسبب في تلف بنية البيانات أكثر خطورة.
لخص
حتى الآن ، انتهى محتوى هذه المقالة. نظرًا لطول منشور المدونة ، لم أقل الكثير عن استخدام Flyway بمزيد من التفصيل. يتم استخدام هذه المقالة بشكل أساسي كحجر انطلاق لمساعدة وتوجيه الأفراد أو الفرق الذين يستخدمون SPRING BOOT للقيام بعمل أفضل في التحكم في إصدار قاعدة البيانات. بالنسبة لمزيد من التطبيقات المتعمقة ، يرجى قراءة المستندات الرسمية للرجوع إليها والدراسة.
رمز هذه المقالة: github: https://github.com/dyc87112/springboot-learning/
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.