Cela me laisse perplexe :
J'ai un modèle dans lequel je veux utiliser une énumération. Je déclare d'abord l'énumération :
enum MenuChoices: String, Codable {
case reachableAt
case attentionTo
case reasonVisit
case reasonProblem
}
Ensuite, il est dans mes champs de la classe :
@Enum(key: "menu_choices")
var menuChoices: MenuChoices
Ensuite je le crée dans la base de données en utilisant une migration :
struct CreateUserMenu: Migration {
func prepare(on database: Database) -> EventLoopFuture {
return database.enum("menu_choices")
.case("reachable_at")
.case("attention_to")
.case("reason_visit")
.case("reason_problem")
.create()
.flatMap { menu_choices in
return database.schema("user_menus")
.id()
.field("created_at", .datetime, .required)
.field("updated_at",.datetime, .required)
.field("deleted_at",.datetime)
.field("menu_choices", menu_choices)
.field("be_nl", .string)
.field("be_fr", .string)
.field("en_us", .string)
.create()
}
}
}
Jusque-là tout va bien. Cette migration fonctionne et la base de données semble correcte. Mais lorsque je veux ajouter des données pour alimenter la base de données dans une autre migration, j'obtiens une erreur :
let test = UserMenu( menuChoices: MenuChoices.reachableAt, beNl: "nl", beFr: "fra", enUs: "eng")
let _ = test.save(on: database)
+ App.addUserMenus on default
Would you like to continue?
y/n> y
[ ERROR ] previousError(MySQL error: Server error: Data truncated for column 'menu_choices' at row 1)
Fatal error: Error raised at top level: previousError(MySQL error: Server error: Data truncated for column 'menu_choices' at row 1): file /AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-1103.8.25.8/swift/stdlib/public/core/ErrorType.swift, line 200
USSS-Voyager-II:24yours data$
Malheureusement, cette erreur ne permet pas vraiment de localiser la source du problème