2

新しいプロジェクトに とを使用してVapor 3おり、移行によってFluentMySQLフィールド ( ) の最大長を変更したいと考えていvarchar(N)ます。これどうやってするの?

私は自分のプロジェクトで名前が付けられたモデルを持っており、Wordそのフィールドの 1 つはそれで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))
    }
}

うまくいきませんでした。何も起こらなかった。

VaporFluentMySQLおよび移行を介してテーブルの構造を変更するにはどうすればよいですか?

4

2 に答える 2