Scala Play、Anorm和PostgreSQL:序列列有问题吗?

Scala Play、Anorm和PostgreSQL:序列列有问题吗?,scala,playframework,playframework-2.0,postgresql-9.1,anorm,Scala,Playframework,Playframework 2.0,Postgresql 9.1,Anorm,我将Play2.1.0与anorm、Scala2.10和PostgreSQL(9.1,驱动程序:9.1-901.jdbc4)一起使用。以下查询在MySQL中运行良好。在迁移到PostgreSQL之后,它就没有了。进入该方法后,在“隐式连接”行中抛出了一个“异常”,即调试器直接跳转到Sql.resultSetToStream行527,其中显然确定了列的元数据。在播放日志中没有显示错误 id字段在MySql中是一个整数,在PostgreSQL中是一个串行字段。阿诺姆对连载列有问题吗 def getU

我将Play2.1.0与anorm、Scala2.10和PostgreSQL(9.1,驱动程序:9.1-901.jdbc4)一起使用。以下查询在MySQL中运行良好。在迁移到PostgreSQL之后,它就没有了。进入该方法后,在“隐式连接”行中抛出了一个“异常”,即调试器直接跳转到Sql.resultSetToStream行527,其中显然确定了列的元数据。在播放日志中没有显示错误

id字段在MySql中是一个整数,在PostgreSQL中是一个串行字段。阿诺姆对连载列有问题吗

def getUserId(userName: String): Int = {
DB.withConnection {
  implicit connection =>
    try {
      val result = SQL("select  id from users where user_name = {userName}")
        .on('userName -> userName).apply().head
      result[Int]("id")
    } catch {
      case e: SQLException =>
        Logger.error(e.getStackTraceString)
        //error logged, but no problem when we return 0
        0
    }
  }
 }
同一个表中的insert语句也有同样的问题

有趣的是,以下查询可以工作:

def checkCredentials(userName: String, password: String): Boolean = {
DB.withConnection {
  implicit connection =>
    try {
      val result = SQL("select count(*) as c from users where user_name = {userName} and password = crypt({password}, password)")
        .on('userName -> userName,
          'password -> password).apply().head
      result[Long]("c") > 0
    } catch {
      case e: SQLException =>
        Logger.error(e.getStackTraceString)
        false
    }
}

问题是id列。显然,PostgreSQL将其视为一个虚词,因此如果将其放在“”之间,那么它就工作了,这意味着编写“id”可以解决问题。

问题在于id列。显然,PostgreSQL将其视为一个虚词,因此如果将其放在“”之间,则它可以工作,这意味着写入“id”可以解决问题。

是一个序列而不是
长的
类型吗?不,我曾经读过它是一个int。但当sql实际上不会返回任何行时,问题就会出现。但我不明白为什么“无行”结果在MySQL中没有问题,而在PostgreSQL中却有问题。序列不是
Long
类型吗?不,我曾经读过它是int。但问题发生在sql实际上不会返回任何行的时候。但我不明白为什么“无行”结果在MySQL中没有问题,而在PostgreSQL中却有问题。