Wen*_*ell 2 postgresql fluent swift vapor
我有一个使用 Vapor Fluent PostgreSQL 构建的已部署后端。
现在我需要new_field 向数据库中具有架构名称的表添加一个新的必需字段键schema_name 。我创建了一个新的迁移:
struct AddNewFieldToSchema: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
database.schema("schema_name")
.field("new_field", .string, .required)
.update()
}
func revert(on database: Database) -> EventLoopFuture<Void> {
database.schema("schema_name")
.deleteField("new_field")
.update()
}
}
Run Code Online (Sandbox Code Playgroud)
但运行后,它给我错误:
Fatal error: Error raised at top level: server: column "new_field" of relation "schema_name" contains null values (ATRewriteTable)
Run Code Online (Sandbox Code Playgroud)
我猜测这是因为使用旧数据模型创建的现有数据没有 的值new_field,因为如果数据库为空,这个新迁移运行正常。
我该如何解决这个问题?谢谢。
该.field函数采用一个可选属性列表,您可以在其中传递默认值,所以对您来说它将是
func prepare(on database: Database) -> EventLoopFuture<Void> {
database.schema("schema_name")
.field("new_field", .string, .required, .sql(.default("Your default value")))
.update()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |