Я использую Vapor 3
и FluentMySQL
для моего нового проекта и хочу изменить максимальную длину поля (varchar(N)
) с помощью миграции.Как я могу это сделать?
У меня есть модель с именем Word
в моем проекте, и одно из ее полей - sourceIdentifier
, то есть String
и имеет максимальную длину 12. Модель выглядит примерно так:
final class Word: MySQLModel {
...other properties
var sourceIdentifier: String
...other properties
}
Сначала я думал, что для поля достаточно 5, и использовал этот код для создания Table
для этой модели:
static func prepare(on conn: MySQLConnection) -> Future<Void> {
return MySQLDatabase.create(Word.self, on: conn) { builder in
...other fields...
builder.field(for: \.sourceIdentifier, type: .varchar(5, characterSet: nil, collate: nil))
...other fields...
}
}
Как вы видите выше,таблица создана с полем sourceIdentifier
и ее тип .varchar(5, characterSet: nil, collate: nil)
.
Теперь я хочу увеличить максимальную длину поля с помощью миграции.
Я тоже попробовал MySQLDatabase.update
вот так:
static func prepare(on conn: MySQLConnection) -> Future<Void> {
return MySQLDatabase.update(Word.self, on: conn) { builder in
builder.field(for: \.sourceIdentifier, type: .varchar(12, characterSet: nil, collate: nil))
}
}
и это не сработало;Ничего не произошло.
Как изменить структуру таблицы с помощью Vapor
, FluentMySQL
и миграций?