
Kysely исправил порядок миграций при переводе системных часов назад
12 ноября 2026 года Kysely выпустил версии 0.29.9 и 0.28.20 с исправлением миграций при обратном ходе системных часов. Для читателей Mentoring.digital, работающих с TypeScript и базами данных, важна разница между предотвращением новых ошибок и восстановлением уже сохранённой истории.
Содержание новости
Почему появлялась ошибка corrupted migrations
Если часы во время миграции переводились назад, новая запись могла получить более раннюю временную метку, чем предыдущая. Среди примеров в объявлении названы синхронизация времени WSL2 или виртуальной машины, скачок NTP и високосная секунда без сглаживания. Миграции при этом могли выполниться в правильной последовательности, но последующие вызовы migrateToLatest() завершались ошибкой corrupted migrations.
Теперь мигратор читает последнюю сохранённую метку под блокировкой миграций. Следующая запись получает максимум из текущего времени и предыдущей метки плюс одна миллисекунда. Некорректное значение timestamp у выполненной миграции также вызывает явную ошибку вместо произвольной сортировки. В ветку 0.28 исправления перенесены выпуском 0.28.20.
Обновление не исправляет старую историю автоматически
Если временные метки в таблице миграций уже нарушены, разработчики предлагают отдельное разовое исправление. В релизе приведены запросы для поддерживаемых диалектов: они последовательно упорядочивают метки с шагом не меньше одной миллисекунды. Имя таблицы и схему нужно сопоставить с настройками своего проекта.
Такую операцию выполняют без параллельно работающих миграций. Для режима allowUnorderedMigrations: true предложенное восстановление нужно пропустить: порядок имён в нём не равен порядку выполнения, а такие метки не блокируют миграции. Поэтому нельзя переносить SQL из объявления в рабочую базу без проверки условий.
Перед исправлением сохраните пригодную для восстановления копию истории и проверьте выбранный запрос на копии базы. Затем сверяйте записи и обычный запуск мигратора.
Работу с типами и доступом к данным можно включить в обучение TypeScript. Историю миграций и порядок безопасного обновления полезно разобрать с ментором по TypeScript на обезличенном примере проекта.
Оценки и отзывы о новости
Отзывы читателей0
Здесь пока нет отзывов. Расскажите, чем вам полезна новость.

