prisma2 migrate Ошибка: в базе данных больше миграций, чем локально
Я создаю серверное приложение с использованием prisma2 + typescript + nexus + graphql-yoga. Я определил свою схему сейчас, пытаясь сохранить миграцию, выполнив команду prisma2 migrate save --name "init" --experimental
Получаю следующую ошибку.
Ошибка: в базе данных больше миграций, чем локально. Этого не должно происходить. Идентификаторы локальной миграции: . Идентификаторы удаленной миграции: 20200312230215-init, 20200312232858-init2
2 ответа
Это связано с несоответствием между миграциями, которые были выполнены для базы данных, и миграциями в вашем prisma/migrations
папка.
Это происходит при следующих обстоятельствах:
- Создать миграцию с
prisma2 migrate save --name “init” --experimental
- Выполните миграцию с помощью
prisma2 migrate up --experimental
- Удалите файлы миграции в вашем
prisma/migrations
папка - Попробуйте бежать
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
это должно быть работать