Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知列';RECEPTORS.r#u name';在';字段列表';_Mysql_Jdbc_Playframework_Sbt_Multiple Tables - Fatal编程技术网

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知列';RECEPTORS.r#u name';在';字段列表';

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知列';RECEPTORS.r#u name';在';字段列表';,mysql,jdbc,playframework,sbt,multiple-tables,Mysql,Jdbc,Playframework,Sbt,Multiple Tables,我正在使用Play2.3.8框架创建一个API并访问它。当我在mariaDB控制台上运行查询时,它工作正常,但当我从play运行它时,我得到一个错误,即字段RECEPTORS.r_name不可用,这是不正确的 我的代码是 package models.dao import anorm._ import models.Profile import play.api.db.DB import play.api.Play.current object ProfileDAO { def index

我正在使用Play2.3.8框架创建一个API并访问它。当我在mariaDB控制台上运行查询时,它工作正常,但当我从play运行它时,我得到一个错误,即字段RECEPTORS.r_name不可用,这是不正确的

我的代码是

package models.dao

import anorm._
import models.Profile
import play.api.db.DB
import play.api.Play.current

object ProfileDAO {

def index(r_name: String): List[Profile] = {
  DB.withConnection { implicit c =>
    val results = SQL(
      """
        | SELECT `RECEPTORS.r_name`,`RECEPTORS.pdbCode`, `LIGANDS.l_id`, `LIGANDS.l_score` 
        | FROM `RECEPTORS`
        | INNER JOIN `LIGANDS`
        | WHERE `RECEPTORS.r_name`={r_name};
      """.stripMargin).on(
        "r_name" -> r_name
      ).apply()

    results.map { row =>
      Profile(row[String]("r_name"), row[String]("pdbCode"),row[String]("l_id"),row[Double]("l_score"))
    }.force.toList
  }
 }

}
SELECT RECEPTORS.r_name, pdbCode, l_id, l_score FROM RECEPTORS INNER JOIN LIGANDS WHERE RECEPTORS.r_name="receptor";
我在mariaDB控制台上运行的查询是

package models.dao

import anorm._
import models.Profile
import play.api.db.DB
import play.api.Play.current

object ProfileDAO {

def index(r_name: String): List[Profile] = {
  DB.withConnection { implicit c =>
    val results = SQL(
      """
        | SELECT `RECEPTORS.r_name`,`RECEPTORS.pdbCode`, `LIGANDS.l_id`, `LIGANDS.l_score` 
        | FROM `RECEPTORS`
        | INNER JOIN `LIGANDS`
        | WHERE `RECEPTORS.r_name`={r_name};
      """.stripMargin).on(
        "r_name" -> r_name
      ).apply()

    results.map { row =>
      Profile(row[String]("r_name"), row[String]("pdbCode"),row[String]("l_id"),row[Double]("l_score"))
    }.force.toList
  }
 }

}
SELECT RECEPTORS.r_name, pdbCode, l_id, l_score FROM RECEPTORS INNER JOIN LIGANDS WHERE RECEPTORS.r_name="receptor";
与播放2.3.8一起运行的错误如下所示

package models.dao

import anorm._
import models.Profile
import play.api.db.DB
import play.api.Play.current

object ProfileDAO {

def index(r_name: String): List[Profile] = {
  DB.withConnection { implicit c =>
    val results = SQL(
      """
        | SELECT `RECEPTORS.r_name`,`RECEPTORS.pdbCode`, `LIGANDS.l_id`, `LIGANDS.l_score` 
        | FROM `RECEPTORS`
        | INNER JOIN `LIGANDS`
        | WHERE `RECEPTORS.r_name`={r_name};
      """.stripMargin).on(
        "r_name" -> r_name
      ).apply()

    results.map { row =>
      Profile(row[String]("r_name"), row[String]("pdbCode"),row[String]("l_id"),row[Double]("l_score"))
    }.force.toList
  }
 }

}
SELECT RECEPTORS.r_name, pdbCode, l_id, l_score FROM RECEPTORS INNER JOIN LIGANDS WHERE RECEPTORS.r_name="receptor";
laeeq@optiplex:~/Desktop/Backup/Project5/cpvsAPI$sbt-jvm debug 9999 在地址:9999[info]处运行传输dt_套接字的侦听加载 项目定义来自 /home/laeeq/Desktop/Backup/Project5/cpvsAPI/project[info]设置为当前 cpvsAPI项目(内部版本) 文件:/home/laeeq/Desktop/Backup/Project5/cpvsAPI/)[info]正在更新 {file:/home/laeeq/Desktop/Backup/Project5/cpvsAPI/}根目录。。。[信息] 解决jline#jline;2.11 ... [信息]已完成更新

---(运行应用程序时,启用自动重新加载)---

[信息]播放-在/0:0:0:0:0:0:0:0:0:9000上收听HTTP

(服务器已启动,使用Ctrl+D停止并返回控制台…)

SLF4J:可能已访问以下一组替代记录器 SLF4J:在初始化阶段。在此期间记录呼叫 SLF4J:未遵守阶段。但是,后续的日志记录调用 这些SLF4J:记录器将正常工作。SLF4J:另见 SLF4J: org.webjars.WebJarExtractor[info]将1个Scala源代码编译为 /home/laeeq/Desktop/Backup/Project5/cpvsAPI/target/scala-2.11/classes。。。 [信息]播放-数据库[默认值]已连接到 jdbc:mysql://localhost:3306/db_profile [信息]播放-应用程序 已启动(开发)[错误]应用程序-

!@766oc7b8l-内部服务器错误,用于(GET)[/profiles/receptor] ->

play.api.Application$$anon$1:执行 异常[[MySQLSyntaxErrorException:未知列 “字段列表”中的“RECEPTORS.r_name”]] play.api.Application$class.handleError(Application.scala:296) ~[play_2.11-2.3.8.jar:2.3.8]在 play.api.DefaultApplication.handleError(Application.scala:402) [play_2.11-2.3.8.jar:2.3.8] play.core.server.netty.playdaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(playdaultUpstreamHandler.scala:205) [play_2.11-2.3.8.jar:2.3.8] play.core.server.netty.playdaultupstreamhandler$$anonfun$14$$anonfun$apply$1.applyOrElse(playdaultupstreamhandler.scala:202) [play_2.11-2.3.8.jar:2.3.8] scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36) [scala-library-2.11.1.jar:na]由以下原因引起: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知 “字段列表”中的“RECEPTORS.r_name”列位于 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) ~(na:1.8.0_151)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~(na:1.8.0_151)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~(na:1.8.0_151)at newInstance(Constructor.java:423) ~(na:1.8.0_151)at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) ~[mysql-connector-java-5.1.18.jar:na]


您需要分别引用表和列,因此请使用:

`RECEPTORS`.`r_name`
否则MySQL会认为您试图引用某个隐式表中名为
RECEPTORS.r\u name
的列


您需要对所有(引用的)列引用执行此操作。特别是在这种情况下,引用似乎是不必要的,因此您也可以只使用
RECEPTORS.r_name
,而不使用反勾号。

您需要单独引用表和列,因此使用:

`RECEPTORS`.`r_name`
否则MySQL会认为您试图引用某个隐式表中名为
RECEPTORS.r\u name
的列


您需要对所有(引用的)列引用执行此操作。特别是在这种情况下,引用似乎是不必要的,因此您也可以只使用
RECEPTORS.r_name
,而不使用反勾号。

谢谢,正如您所建议的,它可以双向使用。最后,我去掉了所有的背面记号。谢谢,它按照你的建议双向工作。最后我去掉了所有的背部虱子。