Kysely исправил порядок миграций при переводе системных часов назад
Новости

Kysely исправил порядок миграций при переводе системных часов назад

0 просмотровОценить новость0 отзывов

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 на обезличенном примере проекта.

Мнение читателей

Оценки и отзывы о новости

Оставить отзыв

Как вам новость?

Поставьте оценку. При желании добавьте отзыв или вопрос по новости.

Ваша оценка
5 из 5
0 / 3 000

После одобрения имя, оценка и отзыв будут видны другим читателям. Политика конфиденциальности

Отзывы читателей0

Здесь пока нет отзывов. Расскажите, чем вам полезна новость.

Все новости