Scala 自动回滚不';t回滚
运行以下规范后,表就存在了。我希望它永远不会出现,因为它应该只存在于最终回滚的事务中Scala 自动回滚不';t回滚,scala,specs2,scalikejdbc,Scala,Specs2,Scalikejdbc,运行以下规范后,表就存在了。我希望它永远不会出现,因为它应该只存在于最终回滚的事务中 import org.specs2.mutable.Specification import scalikejdbc.{DB, NamedDB} import scalikejdbc.specs2.mutable.AutoRollback class MyQuerySpec extends Specification with ArbitraryInput { sequential DBs.set
import org.specs2.mutable.Specification
import scalikejdbc.{DB, NamedDB}
import scalikejdbc.specs2.mutable.AutoRollback
class MyQuerySpec extends Specification with ArbitraryInput {
sequential
DBs.setup('myDB)
"creating the table" in new AutoRollback {
override def db(): DB = NamedDB('myDB).toDB()
private val tableName = s"test_${UUID.randomUUID().toString.replaceAll("-", "_")}"
private val query = new MyQuery(tableName)
query.createTable
ok
}
}
行DBs.setup('myDB)
不是示例的一部分。但是如果我删除它,我会得到异常java.lang.IllegalStateException:连接池尚未初始化。(名称:'myDB)
MyQuery.create的源代码:
SQL(s"DROP TABLE IF EXISTS $tableName").execute().apply()
SQL(s"""
|CREATE TABLE $tableName (
| id bigint PRIMARY KEY
|)""".stripMargin).execute().apply()
配置:
db {
myDB {
driver = "org.postgresql.Driver"
url = "****"
user = "****"
password = "****"
poolInitialSize = 1
poolMaxSize = 300
poolConnectionTimeoutMillis = 120000
poolValidationQuery = "select 1 as one"
poolFactoryName = "commons-dbcp2"
}
}
ScalikeJDBC v2.2.9MyQuery#createTable
必须接受如下隐式参数:
def createTable(隐式会话:DBSession)
尝试在连接属性中设置autoCommit=“false”
或defaultAutoCommit=“false”
。似乎defaultAutoCommit=“false”
已起作用。非常感谢。晚上睡个好觉后会完全确认。哈尼错了。它不起作用。只是当我检查时,IntelliJ中的模式列表没有更新。很抱歉,您可以尝试使用DML操作(替换创建表以插入数据),只是为了确保这是scalikejdbc的问题。