Як виявляти та усувати Laravel Schema Drift за допомогою MigrAlign

Перекладено ШІ 0 Laravel News 26 червня, 2026

Пакет MigrAlign синхронізує ваші migrations із реальним станом бази даних, назавжди вирішуючи проблему schema drift. Дізнайтеся, як розумна класифікація ризиків допомагає безпечно оновлювати структуру таблиць і уникати деструктивних змін.

MigrAlign — це Laravel-пакет, який виявляє розбіжності між вашими файлами міграцій та реальною структурою бази даних. Він розроблений для боротьби із «дрейфом схеми» (schema drift), що виникає, коли розробники редагують таблиці напряму, пропускають міграції або працюють у різних оточеннях.

# Як це працює

MigrAlign аналізує ваші наміри, скануючи виклики Schema::create() та Schema::table() у міграціях, а потім порівнює їх із поточним станом бази даних через information_schema (підтримуються MySQL та MariaDB). Отриману різницю пакет пропонує як набір змін. Ви можете переглянути їх перед виконанням:

php artisan migralign:sync --dry-run

# Класифікація ризиків

MigrAlign не застосовує всі зміни наосліп, а розділяє їх на три категорії:

  • Safe (безпечні): додавання nullable-колонок, розширення розміру типів або зміни лише в метаданих.
  • Risky (ризиковані): звуження типів даних, зміна колонки з nullable на not-null або скорочення значень в enum.
  • Destructive (деструктивні): видалення колонок або таблиць.

Безпечні зміни застосовуються автоматично, якщо активована опція auto_apply_safe. Для ризикованих та деструктивних операцій MigrAlign завжди запитує підтвердження, щоб уникнути випадкової втрати даних.

# Точкова синхронізація

Ви можете обмежити синхронізацію конкретною таблицею або окремою міграцією, якщо потрібно оновити лише певну частину схеми:

# Синхронізувати конкретну таблицю
php artisan migralign:sync --table=users
 
# Синхронізувати зміни з конкретної міграції
php artisan migralign:sync --migration=2024_01_01
 
# Застосувати всі зміни без запитів підтвердження
php artisan migralign:sync --force

Після завершення MigrAlign виводить звіт про кожну зміну: застосовано, пропущено, очікує або помилка.

# Встановлення та налаштування

Встановіть пакет через Composer та опублікуйте файл конфігурації:

composer require migralign/laravel-migralign
php artisan vendor:publish --tag=migralign-config

У конфігурації можна вказати шлях до міграцій, таблиці-винятки та параметри автоматичного застосування змін:

return [
    'migrations_path' => database_path('migrations'),
    'ignored_tables' => ['migrations', 'sessions', 'jobs', 'failed_jobs'],
    'auto_apply_safe' => true,
    'connection' => null,
];

MigrAlign потребує PHP 8.2+ (8.3+ для Laravel 13) та підтримує Laravel 11, 12 і 13. Пакет працює тільки з MySQL та MariaDB. Зверніть увагу, що міграції з дуже складною динамічною логікою все ще можуть потребувати ручного контролю.

Дізнатися більше та переглянути вихідний код можна на GitHub.

Популярні

Інше, що варто прочитати

31 Оновлено 26 червня, 2026

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті

41 Оновлено 26 червня, 2026

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

13 Оновлено 26 червня, 2026

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!