2017-12-01 45 views
1

play 2.3.8 프레임 워크를 사용하여 API를 만들고 mariaDB에 액세스합니다. mariaDB 콘솔에서 쿼리를 실행하면 정상적으로 작동하지만 재생에서 실행하면 RECEPTORS.r_name 필드를 사용할 수 없다는 오류가 발생하여 사실이 아닙니다.com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : '필드 목록'에 'RECEPTORS.r_name'열이 없습니다.

내 코드는 내가 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 
    } 
} 

} 

쿼리

을 다음과 같이 재생 2.3.8 실행

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 주소에서 교통 dt_socket 듣기 : 9999 [정보] /home/laeeq/Desktop/Backup/Project5에서 프로젝트 정의를로드하고 있습니다./home/laeeq/Desktop/Backup/Project5/cpvsAPI /) [info] 업데이트 {파일 :/home/laeeq/Desktop/Backup/cpvsAPI/project [정보] 현재 프로젝트를 cpvsAPI로 설정하십시오 (빌드 파일 : Project5/cpvsAPI /} root ... [정보] jline # jline; 2.11 해결 중 ... [정보] 업데이트 완료.

--- --- (응용 프로그램, 자동 재로드를 실행하는 활성화)

[정보]를 플레이

-/0에 HTTP 듣기 : 0 : 0 : 0 : 0 : 0 : 0 : 0 :

9000 (서버가 ... 중지하고 다시 콘솔로 이동 Ctrl 키 + D를 사용하여 시작)

SLF4J : 초기화 단계 : 대체 로거의 다음 세트 SLF4J 읽혔 수 있습니다. 이 SLF4J 단계에서 로깅 호출이 허용되지 않았습니다. 그러나 후속 로깅을 으로 호출하면 SLF4J : 로거가 정상적으로 작동합니다. SLF4J :도 참조 http://www.slf4j.org/codes.html#substituteLogger SLF4J : org.webjars.WebJarExtractor [정보] 1 스칼라 소스 에 /home/laeeq/Desktop/Backup/Project5/cpvsAPI/target/scala-2.11/classes 컴파일 ... [정보] (데브) [오류] 응용 프로그램 응용 프로그램 시작 - -

3306/db_profile [정보] 재생 : // localhost를가한다 : mysql : JDBC에 연결된 데이터베이스 [설정] - 플레이! @ 766oc7b8l - 내부 서버 오류 (GET)/정보/수용체] 대 ->

play.api.Application $$ 아논 $ 1 실행 예외 [MySQLSyntaxErrorException : 알 열 'RECEPTORS.r_name'에서 'field list']] at play.api.Application $ class.handleError (Application.scala : 296) ~ [play_2.11-2.3.8.jar : 2.3.8] at play.api.DefaultApplication.handleError (Application.scala : 402) 에서 [play_2.11-2.3.8.jar : 2.3.8] play.core.server.netty.PlayDefaultUpstreamHandler $$ anonfun $ 14 $$ anonfun $ apply $ 1.applyOrElse (PlayDefaultUpstreamHandler.scala : 205) [play_2.11-2.3.8.jar : 2.3.8] at play.co re.server.netty.PlayDefaultUpstreamHandler $$ anonfun $ 14 $$ anonfun $ apply $ 1.applyOrElse (PlayDefaultUpstreamHandler.scala : 202) [play_2.11-2.3.8.jar : 2.3.8 scala.runtime.AbstractPartialFunction.apply (AbstractPartialFunction.scala 36)에 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : : NA에 의한] [스칼라 라이브러리 2.11.1.jar 알 [: 1.8.0_151 NA] sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)에서 sun.reflect.NativeConstructorAccessorImpl.newInstance0 (원시 메소드) ~ 에서 '필드 목록'에 열 'RECEPTORS.r_name' ~ [NA : 1.8.0_151] sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) 에서 ~ [NA : 1.8.0_151]에서 java.lang.reflect.Constructor.newInstance (Constructor.java:423),210 ~ [NA : 1.8.0_151] com.mysql.jdbc.Util.handleNewInstance (Util.java:411) ~ [MySQL을 커넥터 자바 5.1.18.jar : NA]에서

답변

0

`RECEPTORS`.`r_name` 

그렇지 않으면 MySQL은 당신이 어떤 암시 표에 이름 RECEPTORS.r_name으로 열을 참조하려고 생각

: 당신은 개별적으로 테이블과 열을 인용, 그래서 사용해야합니다.

모든 (인용 된) 열 참조에 대해이 작업을 수행해야합니다. 이 경우 구체적으로 따옴표가 필요하지 않으므로 RECEPTORS.r_name을 백틱없이 사용할 수 있습니다.

+0

감사합니다. 귀하가 제안한대로 두 가지 방법으로 효과가있었습니다. 결국 저는 모든 역 추적을 제거했습니다. – Laeeq