添加列在蒸气现有表

问题描述 投票:2回答:1

我有我的工作有PostsComments项目。我评论链接到使用外键(帖子ID)后。然而,这种外键没有添加到我的评论类,直到我第一次建立与评论类项目之后。

加入postId领域的评论下课后,我试图运行该项目,并创建一个注释。该项目建立和运行正常,但是当我试图创造一个评论,我得到的错误:table Comment has no column named postId

这是某种形式的迁移问题中汽?

swift sqlite vapor server-side-swift
1个回答
2
投票

你仍然需要用蒸气更改同步数据库。正如你猜,你可以通过配置迁移做到这一点。添加到您的configure.swift文件。如果你已经做了迁移前结构你可能想选择一个不同的名称相同的名称可能会导致问题。

struct AddPostID: Migration {
    // Need to declare which database, assuming PostgreSQL here
    typealias Database = PostgreSQLDatabase

    static func prepare(on conn: PostgreSQLConnection) -> Future<Void> {
        return Database.update(Comment.self, on: conn) { builder in
            builder.field(for: \.postId)
        }
    }

    static func revert(on connection: PostgreSQLConnection) -> Future<Void> {
        return Database.delete(Comment.self, on: connection)
    }
}

然后在同一个文件中添加以下到您的配置()函数(您可能已经有MigrationConfig()线和寄存器行因此只要添加新行,如果是这样的话)

var migrations = MigrationConfig()
migrations.add(migration: AddPostID.self, database: .psql)
services.register(migrations)
© www.soinside.com 2019 - 2024. All rights reserved.