prisma2 migrate Ошибка: в базе данных больше миграций, чем локально

Я создаю серверное приложение с использованием prisma2 + typescript + nexus + graphql-yoga. Я определил свою схему сейчас, пытаясь сохранить миграцию, выполнив команду prisma2 migrate save --name "init" --experimental

Получаю следующую ошибку.

Ошибка: в базе данных больше миграций, чем локально. Этого не должно происходить. Идентификаторы локальной миграции: . Идентификаторы удаленной миграции: 20200312230215-init, 20200312232858-init2

2 ответа

Это связано с несоответствием между миграциями, которые были выполнены для базы данных, и миграциями в вашем prisma/migrations папка.

Это происходит при следующих обстоятельствах:

  1. Создать миграцию с prisma2 migrate save --name “init” --experimental
  2. Выполните миграцию с помощью prisma2 migrate up --experimental
  3. Удалите файлы миграции в вашем prisma/migrations папка
  4. Попробуйте бежать prisma2 migrate save --name “new-migration” --experimental

На шаге 4 вы увидите эту ошибку.

Prisma отслеживает выполненные миграции в базе данных в таблице с именем _Migration.

Чтобы решить проблему, попробуйте удалить _Migrationтаблица в базе данных. С SQLite это можно сделать следующим образом:

sqlite3 prisma/dev.db "delete from _Migration"

Если это не сработает, вам нужно воссоздать базу данных. Если вы используете sqlite, удалитеprisma/dev.db файл (вы потеряете все данные в базе данных).

Чтобы предотвратить это в будущем, убедитесь, что вы начинаете с чистой базы данных, и если вы повторно используете ту же базу данных, избегайте удаления файлов миграции (в prisma/migrations после того, как они были казнены.

Это происходит, когда возникает конфликт с файлом schema.Prisma и базой данных, которую вы использовали для миграции, вы использовали старую базу данных, и есть таблица с его именем _Migration, как решить, поэтому попробуйте удалить его с помощью пользовательского интерфейса или команды строку name_database удалите из _Migration и попробуйте выполнить yarn prisma migrate save --experimental или prisma2 migrate save --name “new-migration” --experimentalэто должно быть работать

Другие вопросы по тегам