如何解决为什么当表新创建为 StringIdTable 时,Exposed 会抱怨已经存在的 id 列?
我开始尝试使用 JetBrains Exposed 0.28.1 和 Postgres 13。 当我尝试创建第一个表时,我得到一个 PsqlException:
ERROR: column "id" of relation "xxx" already exists. Statement(s): ALTER TABLE <schema>.xxx ADD id VARCHAR(10) PRIMARY KEY
这是表创建代码:
open class StringIdTable(
schema: String,name: String,columnName: String = "id",columnLength: Int = 10,) : IdTable<String>("$schema.$name") {
override val id: Column<EntityID<String>> =
varchar(columnName,columnLength).entityId()
override val primaryKey by lazy { super.primaryKey ?: PrimaryKey(id) }
}
const val DB_NAME = "db"
const val SCHEMA_NAME = "schema"
val SCHEMA = Schema(name = SCHEMA_NAME,authorization = "postgres")
object MyTable : StringIdTable(SCHEMA_NAME,"xxx") {
//object MyTable : Table("xxx") {
// val id = varchar(name = "id",length = 10)
val label = varchar(name = "title",length = 255)
val order = text("order")
}
使用 Exposed 的方法调用创建:SchemaUtils.createMissingTablesAndColumns(MyTable)
如果我使用注释行将表定义为“简单”Table
而不是 StringIdTable
,我也不例外。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。