gpt4 book ai didi

swift - 通过 Vapor Fluent-MySQL 中的迁移更改 VARCHAR 字段

转载 作者:行者123 更新时间:2023-11-28 05:44:27 25 4
gpt4 key购买 nike

我正在为我的新项目使用 Vapor 3FluentMySQL 并且想要更改字段的最大长度 (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, collat​​e: 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))
}
}

它没有用;什么都没发生。

如何通过 VaporFluentMySQL 和迁移更改表的结构?

最佳答案

你可以用这样的原始查询做任何事情

static func prepare(on conn: MySQLConnection) -> Future<Void> {
return conn.raw("ALTER TABLE emp MODIFY COLUMN name VARCHAR(100);").run()
}

关于swift - 通过 Vapor Fluent-MySQL 中的迁移更改 VARCHAR 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55383680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com