Проверка миграций
migrate:verify последовательно прогоняет up и сразу down для всех ожидающих миграций. Это позволяет убедиться, что свежие миграции корректно применяются и откатываются до того, как изменения попадут в систему контроля версий. Запускайте команду локально перед коммитом.
Полный цикл
Создайте несколько миграций через migrate:create, а затем запустите migrate:verify. Команда применяет все ожидающие миграции по очереди (up), после чего откатывает их в обратном порядке (down).
/example $ php cli.php migrate:create test --db=sqlite/db
/example $ php cli.php migrate:create test2 --db=sqlite/db
/example $ php cli.php migrate:create test3 --db=sqlite/db
/example $ php cli.php migrate:verify
[sqlite/db] up: 202603070850_test.sql, vers: 177287432696 done
[sqlite/db] up: 202603070850_test2.sql, vers: 177287432696 done
[sqlite/db] up: 202603070850_test3.sql, vers: 177287432696 done
[sqlite/db] down: 202603070850_test3.sql, vers: 177287432696 done
[sqlite/db] down: 202603070850_test2.sql, vers: 177287432696 done
[sqlite/db] down: 202603070850_test.sql, vers: 177287432696 doneС лимитом
Опция --limit полезна, когда нужно проверить только последнюю добавленную миграцию, не затрагивая остальные ожидающие изменения.
/example $ php cli.php migrate:verify --limit=1
[sqlite/db] up: 202603070850_test.sql, vers: 177287441498 done
[sqlite/db] down: 202603070850_test.sql, vers: 177287441498 doneПоведение при ошибке
Если при выполнении up возникает ошибка, migrate:verify автоматически откатывает все миграции, которые успели примениться, — база данных возвращается в исходное состояние. Сообщение об ошибке содержит код SQLSTATE и проблемный фрагмент SQL. Имя файла-нарушителя дополнительно выводится в конце вывода.
/example $ php cli.php migrate:verify
[sqlite/db] up: 202603070850_test.sql, vers: 177287479980 done
[sqlite/db] up: 202603070850_test2.sql error
SQLSTATE[HY000]: General error: 1 incomplete input
-- SQL CODE
INSERT INTO ededede
[sqlite/db] down: 202603070850_test.sql, vers: 177287479980 done
202603070850_test2.sql: SQLSTATE[HY000]: General error: 1 incomplete input