【发布时间】:2016-04-04 18:24:35
【问题描述】:
我有一个非常简单的 MySQL 表,它使用单个 String 列表示一组名称。我想使用 Slick 的 insertOrUpdate,但它生成的 MySQL 不正确,导致错误。具体来说,它想执行
insert into `TABLE1_NAME` (`column`) values ('value') on duplicate key update
它没有指定要更新的什么,所以失败了。具有两列的类似表可以很好地插入,带有类似
的语句insert into `TABLE2_NAME` (`key`, `other_col`) values ('value1', 'value2') on duplicate key update `other_col`=VALUES(`other_col`)
有人看过吗?我们确实为TABLE1 设置了一个主键。我们的表格投影映射可能不正确。我们正在使用 Slick 3.1.1。
class Table1(tag: Tag) extends Table[Table1Record](tag, "TABLE1_NAME") {
def value = column[String]("value", O.PrimaryKey, O.Length(254))
def * = (value) <> (Table1Record, Table1Record.unapply)
}
class Table2(tag: Tag) extends Table[Table2Record](tag, "TABLE2_NAME") {
def value1 = column[String]("value1", O.PrimaryKey, O.Length(254))
def value2 = column[String]("value2", O.Length(254))
def * = (value1, value2) <> (Table2Record.tupled, Table2Record.unapply)
}
【问题讨论】: