Предполагая, что вы развернули приложение и имеете несколько установок, вам нужно будет сохранить две версии таблицы. Если нет, то вы всегда можете удалить вторую миграцию, если она не делает ничего, кроме добавления поля. Как вы обнаружили, поле создается во время первой миграции в новой установке.
Однако, если вам нужно иметь оба варианта, вам придется заменить использование AddProperties
в исходной миграции, которая создает таблица с явным списком полей, за исключением того, которое вы добавляете во второй миграции. Примеры создания отдельных полей:
extension User:Migration
{
static func prepare(on connection:MySQLConnection) -> Future<Void>
{
return Database.create(self, on:connection)
{
builder in
builder.field(for:\.id, isIdentifier:true)
builder.field(for:\.surname, type:.varchar(30, characterSet:nil, collate:nil))
builder.field(for:\.firstName, type:.varchar(30, characterSet:nil, collate:nil))
}
}
}
Это создаст таблицу в том виде, в каком она была у вас ранее при создании таблицы в исходной базе данных. Тогда ваша вторая миграция будет работать как прежде. См. https://docs.vapor.codes/3.0/fluent/migrations/ для получения дополнительной информации.