Проблема
Эта строка кода прямо здесь - нарушитель спокойствия:
@Column({ nullable: false, type: "float" })
public price!: number
Вы установили nullable: false
, что означает, что вы никогда не хотите, чтобы этот столбец был нулевым.
Почему это доставляет вам неприятности?
Поскольку в вашей базе данных уже есть строки, в которых нет записи для этого столбца.
Помните:
До этой миграции столбец не существовал. Но теперь вы запускаете миграцию, чтобы добавить новый столбец.
Но TypeORM нужен способ обработки существующих строк ...
Итак, если бы вы были TypeORM, какое значение вы бы присвоили по умолчанию, если бы столбец не существовал? Вероятно NULL
. Что именно и делает. И вот почему ошибка.
Как вы решаете эту проблему?
Здесь есть два пути.
Очень простой способ
Установить значение по умолчанию в ColumnOptions
@Column({ nullable: false, type: "float", default: 0.0 })
public price!: number
ОПАСНОСТЬ: ядерный вариант
Удалите все данные из таблицы, затем повторно запустите миграцию.
В Postgres PSQL:
DELETE FROM test;