Миграция Prisma приводит к потере данных

#javascript #node.js #prisma

Вопрос:

Я новичок в prisma , я работаю над проектом с nodejs и prisma, моя база данных не пуста, и я внес некоторые изменения в схему prisma, и я хочу перенести ее без потери данных. Есть ли какое-либо решение, пожалуйста ?

Комментарии:

1. Не могли бы вы дать немного больше разъяснений о том, с какой проблемой вы столкнулись и с какими точными обстоятельствами? Кроме того, если это база данных разработчиков, вы можете просто запросить данные и повторно заполнить базу данных.

2. Нет, это производственная база данных, размещенная на VPS, и я хочу добавить несколько столбцов, но я не хочу, чтобы данные были потеряны

3. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

4. @MohamedFadelMoumeni Я ответил на основании предоставленных вами разъяснений.

Ответ №1:

Ответ основан на проблеме, о которой вы упомянули в комментарии: «Я хочу добавить несколько столбцов, но я не хочу, чтобы существующие данные были потеряны».

если вы хотите добавить новые столбцы в существующую базу данных без потери данных, вам необходимо убедиться, что новые столбцы/поля являются необязательными. Это можно сделать в Prisma, пометив тип поля символом a ? .

Если вам нужно, чтобы поле было обязательным, вы можете сделать это в три этапа:

  1. Сначала создайте новое поле как необязательное в схеме prisma и запустите миграцию
  2. Запустите сценарий, чтобы обновить все записи с этим полем, чтобы иметь определенные данные (какие данные должны зависеть от вашего контекста). Это также необходимо будет сделать для данных производственной базы данных.
  3. Отметьте это поле как обязательное в вашей схеме Prisma и запустите миграцию. Теперь это не приведет к потере данных, потому что это поле предназначено non-null для всех записей в базе данных.