2013-03-11 4 views
0

새로운 Grails 프로젝트를 기존 SQL 서버 2008 데이터베이스에 연결하려고합니다. 문제를 나열/업데이트하거나 아무 것도 작동하지 않을 때 문제가 발생합니다. 오류 읽기SQL 2008 레거시 테이블에서 Grails 테이블을 찾을 수 없습니다.

테이블 "TEST_EXEC_QUEUE"찾을 수 없습니다; SQL 문 : 상위 10 개를 this0.so로 선택하고,이 _.Env를 Env0_0_으로,이 _.Priority를 ​​Priority0_0_으로, this_.State를 State0_0_, this_.subSystem을 subSystem0_0_,이 _.system을 system0_0_, this_.test_scenario_id를 test7_0_0_으로 test_exec_queue this_ [42102-164]

내 DataSource.groovy에 파일은 다음과 같습니다 -

dataSource { 
    pooled = false 
    driverClassName = "net.sourceforge.jtds.jdbc.Driver" 
    dialect = "org.hibernate.dialect.SQLServerDialect" 
    } 

hibernate { 
    cache.use_second_level_cache = true 
    cache.use_query_cache = false 
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' 
} 


// environment specific settings 
    development { 
     dataSource { 
      dbCreate = "update" 
      url = "jdbc:jtds:sqlserver://UKSQL08;databaseName=Selenium" 
     } 
    } 

다음과 같이 도메인 파일이 누구나 어떤 아이디어를 가지고 ...?

package testexecqueue 

class TestExecQueueCheck { 

    static constraints = { 
     test_scenario_id(blank:false) 
     myPriority() 
     myState() 
     myEnv() 
     system() 
     subSystem() 
    } 

    static mapping = { 
     table "test_exec_queue" 
     version false 
     columns{ 

      test_scenario_id column:"test_scenario_id" 
      myPriority column:"Priority" 
      myState column:"State" 
      myEnv column:"Env" 
      system column:"system" 
      subSystem column:"subSystem" 
     } 
    } 

    Integer test_scenario_id 
    Integer myPriority 
    String myState 
    String myEnv 
    String system 
    String subSystem 
} 

답변

0

이것은 대답이 아니지만 실제로 계정을 지정하고 JDBC 연결로 다시 이동하면 문제가 없어져서 아직 조사하지 않은 Windows 서비스 계정/JTDS와 관련이 있다는 것을 알았습니다 다음과 잘 작동으로 더 ... sqljdbc4를 사용하여 내 데이터 소스는 차이를 보인다 나던

dataSource { 
    pooled = true 
    driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver" 
} 

hibernate { 
    cache.use_second_level_cache = true 
    cache.use_query_cache = false 
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' 
} 


// environment specific settings 
environments { 
    development { 
     dataSource { 
      dbCreate = 'update' // one of 'create', 'create-drop','update' 
      url = "jdbc:sqlserver://localhost;database=TestDB" 
    //  databaseName = "..." 
     username = "test" 
     password = "test" 
      dialect = org.hibernate.dialect.SQLServerDialect 
      //logSql = true 
     } 
    } 
+0

또한 여기에 추가하려면 Windows 인증을 사용하려면 jdbc jar와 lib의 auth dll을 모두 넣어야합니다. lib 폴더에있는 jar 파일과 그것이 작동하기 시작한 auth dll을 추가하기 전까지는 아니 었습니다. 이제는 사용자 계정이나 암호를 지정하지 않아도됩니다. – MorkPork

0

TestExecQueueCheck 도메인에 ID가 없습니다. test_scenario_id 필드의 이름을 id으로 바꿉니다. 문제를 해결해야합니다.

+0

흠, 난 등, ID에 test_scenario_id라는 모든 변수를 변경 한 청소하고 다시 컴파일 ... 지금은 그럼 다시 실행하고 난 여전히 같은 문제가 ... 나는 당신이 ID를 데이터베이스 필드를 변경 뜻을 가정합니까? – MorkPork

+0

Grails 도메인을 의미합니다. 내 제안은 결과를 변경해야한다 : 당신의 SQL 문에서도 암시 적 열'id' ('test_scenario_id' 외에)를 포함하고 있음을 알 수있다. Grails는 항상 그러한 열을 자동으로 추가합니다. 열의 이름을 변경 한 후 새로운 "찾을 수 없음"오류 메시지를 확인하십시오. 존재하지 않는 열이 포함되어 있습니까? – eugene82

+0

이제'select top 10 this_.test_exec_queue_id를 test1_0_0_, this_.Env를 Env0_0_, this_.Priority를 ​​Priority0_0_, this_.State를 State0_0_, this_.subSystem을 subSystem0_0_, this_.system을 system0_0_, this_로 지정하십시오.test_exec_queue에서 test7_0_0_ 같은 test_scenario_id this_ [42102-164] ' – MorkPork