مایگریشن (Migration) روشی برای نسخه‌بندی و اجرای مرحله‌ای تغییرات ساختار دیتابیس است. وقتی ستون جدیدی به سفارش اضافه می‌شود، به‌جای اجرای دستی Query روی چند محیط، تغییر را در یک فایل قابل نسخه‌بندی ثبت می‌کنیم تا توسعه، تست و Production همگام بمانند. مایگریشن می‌تواند تغییر داده را هم شامل شود، اما باید اثر آن بر سازگاری و قابلیت بازگشت بررسی شود.

مایگریشن در Laravel

php artisan make:migration add_tracking_code_to_orders_table --table=orders
php artisan migrate
php artisan migrate:rollback --step=1
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

Schema::table('orders', function (Blueprint $table): void {
    $table->string('tracking_code')->nullable();
});

مایگریشن در Yii 3

در نسخه سوم یی، پکیج yiisoft/db-migration ابزار ساخت و اجرای مایگریشن را فراهم می‌کند. ساختار پروژه ممکن است فرمان را به شکل make yii ... در اختیار بگذارد.

composer require yiisoft/db-migration
./yii migrate:create add_tracking_code_to_orders
./yii migrate:up
./yii migrate:down --limit=1

مایگریشن در Yii 2 و Symfony

php yii migrate/create add_tracking_code_to_orders
php yii migrate
php yii migrate/down 1

composer require doctrine/doctrine-migrations-bundle
php bin/console make:migration
php bin/console doctrine:migrations:migrate

مایگریشن در Django و Alembic

python manage.py makemigrations shop
python manage.py migrate
python manage.py migrate shop 0002_previous

# FastAPI or SQLAlchemy projects using Alembic
alembic revision --autogenerate -m "Add tracking code"
alembic upgrade head

مایگریشن در ASP.NET Core

dotnet ef migrations add AddTrackingCode
dotnet ef database update
dotnet ef database update PreviousMigration

مایگریشن ایمن در Production

تغییرات سازگار به‌صورت Expand / Contract انجام شوند. ابتدا ستون جدید را اضافه کنید، نسخه برنامه را هماهنگ کنید و حذف ستون قدیمی را به Release بعدی موکول کنید. به‌خصوص برای جدول‌های بزرگ، زمان قفل و هزینه Migration را تخمین بزنید.

برای مفاهیم مرتبط، اسکیما، رول‌بک و ورژنینگ را ببینید.