提问人:Mr. MonoChrome 提问时间:9/21/2023 最后编辑:Mr. MonoChrome 更新时间:9/21/2023 访问量:31
Slick 3.3.3 不解析 mysql datetime
Slick 3.3.3 not parsing mysql datetime
问:
我使用 slick 3.3.3,并且我有一个带有 LocalDateTime 设置列的表(我也尝试了 OffsetDateTime)
有人告诉我 slick 3.3.3 解决了这个问题,但无论我做什么,在尝试解析此列时我仍然会得到 Text '2023-09-20 21:20:21' could not be parsed at index 10
def startDate = column[Option[LocalDateTime]]("start_date")
我可以在代码中看到他们在 mysql 配置文件 iso8601String 中假设,并且只是让 LocalDateTime 或 OffsetDateTime 自行解析它,但这些都不支持上述字符串,这就是 mysql 自然存储字符串的方式。我不明白。
我自己也尝试使用他们的自定义映射器,但我同样不明白如何设置它
MappedColumnType.base[Option[OffsetDateTime], String](
localDateTime => localDateTime.map(_.format(formatter)).orNull,
timeStr => if (timeStr == null) None else Some(OffsetDateTime.parse(timeStr, formatter))
)
即使我像这样将隐式直接输入到列中:
def startDate = column[Option[LocalDateTime]]("start_date", O.SqlType("datetime"))(dateTimeMappingOption)
它只是不会触发它。我也不太确定它如何处理可选,如果我希望为每个版本及其可选版本制作解析器,或者是否有某种方法可以自动执行此操作。
感谢帮助。
答:
0赞
Gastón Schabas
9/21/2023
#1
这里有 slick 3.3 的迁移指南。
在MySql的情况下说:
slick.jdbc.MySQLProfile
Java 类型 SQL 类型 例 SQL 文本 java.time.LocalDateTime
发短信 '2019-02-03T18:20:28.661' java.time.OffsetDateTime
发短信 '2019-02-03T18:20:28.661Z'
这意味着,表中列的数据类型必须为 。如果列可以为 null,则可以像这样定义列TEXT
def startDate = column[Option[LocalDateTime]]("start_date")
如果此示例还不够,请编辑您的帖子,添加您在数据库中创建表的方式,并显示您在执行代码时收到的错误消息
评论