Jooq postgre 在 play2.5 scala 中插入错误

Posted

技术标签:

【中文标题】Jooq postgre 在 play2.5 scala 中插入错误【英文标题】:Jooq postgre insert error with play2.5 scala 【发布时间】:2017-08-02 10:42:43 【问题描述】:

我在一个带有 play2.5 和 scala 的应用中使用 jooq

当我插入一个简单的查询时,驱动程序会在表和字段名称周围准备一个查询,而 postgres 会以错误响应,我该如何克服这个问题,可能有一个驱动程序参数来设置此行为?

我正在使用

sbt 配置

libraryDependencies ++= Seq(
  jdbc,
  cache,
  ws,
  evolutions,
  filters,
  "org.scalatestplus.play" %% "scalatestplus-play" % "1.5.0-RC1" % Test,
  "org.postgresql" % "postgresql" % "9.2-1003-jdbc4",
  "org.jooq" % "jooq" % "3.7.0",
  "org.jooq" % "jooq-codegen-maven" % "3.7.0",
  "org.jooq" % "jooq-meta" % "3.7.0",
  "joda-time" % "joda-time" % "2.7",
  "com.adrianhurt" %% "play-bootstrap" % "1.1-P25-B3",
  "org.mindrot" % "jbcrypt" % "0.3m"
)

错误:

[debug] 2017-03-12 11:18:52,042 o.j.t.LoggerListener - Executing query          : insert into `public`.`user_account` (`nickname`, `email`, `password`, `role`) values (?, ?, ?, ?)
[debug] 2017-03-12 11:18:52,043 o.j.t.LoggerListener - -> with bind values      : insert into `public`.`user_account` (`nickname`, `email`, `password`, `role`) values ('', 'simon.cigoj@gmail.com', 'nomis05', 'ROLE_USER')
[error] 2017-03-12 11:18:52,139 o.j.StatementLogger - insert into `public`.`user_account` (`nickname`, `email`, `password`, `role`) values ('', 'aaa@mail.com', 'kjhkh', 'ROLE_USER');
throws exception: org.postgresql.util.PSQLException: ERROR: syntax error at or near "`"
  Position: 13
org.postgresql.util.PSQLException: ERROR: syntax error at or near "`"
  Position: 13

【问题讨论】:

【参考方案1】:

看来你没有设置正确的SQLDialect,比如

SQLDialect.POSTGRES_9_5

https://www.jooq.org/javadoc/3.8.x/org/jooq/SQLDialect.html

【讨论】:

是的,我自己刚找到的,我已经从 mariadb 切换到 postgre 忘记设置对话框了

以上是关于Jooq postgre 在 play2.5 scala 中插入错误的主要内容,如果未能解决你的问题,请参考以下文章

Jooq 无法找到 postgres 数据库的驱动程序

从jOOQ访问名为CHECK CONSTRAINTS的Postgres

JOOQ 解析器问题(POSTGRES 到 H2 的翻译)

Jooq Postgres JSON 查询

如何在带有 jOOQ 的 WHERE 条件下使用 Postgres JSON 运算符?

带有jooq的postgres数组范围表示法