我正在尝试实现HSQLDB而不是Mysql,我的其余部分是通过akka-http实现的服务,具有光滑和Hikari cp的连接池。 早些时候
class HikariService(jdbcUrl: String,
dbUser: String,
dbPassword: String,slickProfile:String) extends DriverDataSource{
private val hikariConfig = new HikariConfig()
val jdbcurl: String = s"$jdbcUrl/db_name"
hikariConfig.setJdbcUrl(jdbcurl)
hikariConfig.setUsername(dbUser)
hikariConfig.setPassword(dbPassword)
private val dataSource = new HikariDataSource(hikariConfig)
val driver = if(slickProfile == "MySQL")
slick.jdbc.MySQLProfile
else slick.jdbc.HsqldbProfile
import driver.api._
val db = Database.forDataSource(dataSource)
db.createSession()
}
和hsqldb的jdbc url是jdbc:hsqldb:file:/ Users / abc /
现在我能够看到在abc目录中生成的日志,其中包含.log文件
SET SCHEMA PUBLIC
并且所有表都是使用模式公共创建的。
现在,当我使用光滑查询它时会抛出错误
处理请求时出错:
'user lacks privilege or object not found: table_name in statement [select "id", "name", "type", "configuration", "description" from "table_name" ]
我的光滑连接看起来像
trait EntityTable {
protected val hikariService: HikariService
import hikariService.driver.api._
protected val enricher = TableQuery[Table_name]
class Enricher(tag: Tag) extends Table[EnricherEntity](tag, "table_name") {
def * = (id, name, `type`, description, configuration) <> ((EnricherEntity.apply _).tupled, EnricherEntity.unapply)
def id = column[Option[Long]]("id", O.PrimaryKey, O.AutoInc)
def name = column[String]("name")
def `type` = column[String]("type")
def description = column[Option[String]]("description")
def configuration = column[String]("configuration")
}
}
执行此操作的正确方法是什么
答案 0 :(得分:0)
您的CREATE TABLE在名为“db_name”的模式中创建表。但是您的SELECT语句不引用模式。在这种情况下,当前的默认模式(称为PUBLIC)用于SELECT语句。由于PUBLIC架构中没有此类表,因此会返回错误。
您可以使用4种不同的方法。