gpt4 book ai didi

transactions - Kotlin Exposed 不提交事务

转载 作者:IT老高 更新时间:2023-10-28 13:41:26 24 4
gpt4 key购买 nike

按照 Exposed 上提供的示例进行操作我无法在创建它的事务之外读取创建的表/数据。我正在使用 h2-in-memory 数据库。

异常(exception)是:

Exception in thread "main" org.h2.jdbc.JdbcSQLException: Table "CITIES" not found; SQL statement:

我添加了一个提交调用,但这没有帮助。如果我在创建数据的事务中读取数据,如 github 链接上的示例所示,它可以正常工作。这是它的简化版本:

fun main(args: Array<String>) {
Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver")

transaction {
create(Cities)

City.new {
name = "St. Petersburg"
}

println("Cities: ${City.all().joinToString { it.name }}")
//I have added this commit here
commit()
}
//I want to read the data outside the transaction, but it does not work
transaction {
println("Cities: ${City.all().joinToString { it.name }}")

}
}

如何保存数据?

添加 logger.addLogger(StdOutSqlLogger) 会得到以下输出:

SQL: CREATE TABLE IF NOT EXISTS CITIES (ID INT AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(50) NOT NULL)
SQL: INSERT INTO CITIES (NAME) VALUES ('St. Petersburg')
SQL: SELECT CITIES.ID, CITIES.NAME FROM CITIES

最佳答案

您似乎从内存 H2 中移出以解决您的问题。请注意,您最初问题的根源可能是因为需要告知 H2 在 JVM 的生命周期内保留您的表:

jdbc:h2:mem:test;DB_CLOSE_DELAY=-1

在此进一步解释:H2 in-memory database. Table not found

关于transactions - Kotlin Exposed 不提交事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45520895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com