2017-11-21 1 views
0

Grails의 초보자입니다. 로컬 MySql 데이터베이스에 데이터를 저장하여 CRUD 작업을 수행하기위한 첫 번째 응용 프로그램을 작성하기 시작했으며 입력 한 데이터를보고 싶습니다. 내 컴퓨터에서. 그러나 데이터베이스 자체에 연결할 수 없습니다. 내가 잘못한 곳에서 나를 도와주세요.grails 응용 프로그램에 대한 로컬 MySql 데이터베이스 연결 설정

dataSource { 
    pooled = true 
    jmxExport = true  
    driverClassName = com.mysql.jdbc.Driver 
    dialect = org.hibernate.dialect.MySQL5InnoDBDialect 
    username = "test" 
    password = "test" 
} 

environments { 
development { 
    dataSource { 
     dbCreate = "update" 
     url = "jdbc:mysql://localhost:3306/librarydb" 
    } 
} 
test { 
    dataSource { 
     dbCreate = "update" 
     url = "jdbc:mysql://localhost:3306/librarydb" 
     //url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE" 
    } 
} 
    production { 
    dataSource { 
     dbCreate = "update" 
     url = "jdbc:mysql://localhost:3306/librarydb" 
     //url = "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE" 
     properties { 
      // See http://grails.org/doc/latest/guide/conf.html#dataSource for documentation 
      jmxEnabled = true 
      initialSize = 5 
      maxActive = 50 
      minIdle = 5 
      maxIdle = 25 
      maxWait = 10000 
      maxAge = 10 * 60000 
      timeBetweenEvictionRunsMillis = 5000 
      minEvictableIdleTimeMillis = 60000 
      validationQuery = "SELECT 1" 
      validationQueryTimeout = 3 
      validationInterval = 15000 
      testOnBorrow = true 
      testWhileIdle = true 
      testOnReturn = false 
      jdbcInterceptors = "ConnectionState" 
      defaultTransactionIsolation = 
      java.sql.Connection.TRANSACTION_READ_COMMITTED 
     } 
     } 
    } 
    } 

을 그림과 같이 내 BuildConfig.groovy 파일이 구성되어 다음과 같이

내 DataSource.groovy에 코드입니다.

grails.servlet.version = "3.0" // Change depending on target container 
compliance (2.5 or 3.0) 
grails.project.class.dir = "target/classes" 
grails.project.test.class.dir = "target/test-classes" 
grails.project.test.reports.dir = "target/test-reports" 
grails.project.work.dir = "target/work" 
grails.project.target.level = 1.6 
grails.project.source.level = 1.6 
//grails.project.war.file = "target/${appName}-${appVersion}.war" 

grails.project.fork = [ 
// configure settings for compilation JVM, note that if you alter the Groovy 
version forked compilation is required 
// compile: [maxMemory: 256, minMemory: 64, debug: false, maxPerm: 256, 
daemon:true], 

// configure settings for the test-app JVM, uses the daemon by default 
test: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, 
daemon:true], 
// configure settings for the run-app JVM 
run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, 
forkReserve:false], 
// configure settings for the run-war JVM 
war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, 
forkReserve:false], 
// configure settings for the Console UI JVM 
console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256] 
] 

grails.project.dependency.resolver = "maven" // or ivy 
grails.project.dependency.resolution = { 
// inherit Grails' default dependencies 
inherits("global") { 
    // specify dependency exclusions here; for example, uncomment this to 
disable ehcache: 
    // excludes 'ehcache' 
} 
log "error" // log level of Ivy resolver, either 'error', 'warn', 'info', 
'debug' or 'verbose' 
checksums true // Whether to verify checksums on resolve 
legacyResolve false // whether to do a secondary resolve on plugin 
installation, not advised and here for backwards compatibility 

repositories { 
    inherits true // Whether to inherit repository definitions from plugins 

    grailsPlugins() 
    grailsHome() 
    mavenLocal() 
    grailsCentral() 
    mavenCentral() 
    // uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories 
    //mavenRepo "http://repository.codehaus.org" 
    //mavenRepo "http://download.java.net/maven/2/" 
    //mavenRepo "http://repository.jboss.com/maven2/" 
} 

dependencies { 

    // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g. 
    runtime 'mysql:mysql-connector-java:5.1.44' 
    // runtime 'org.postgresql:postgresql:9.3-1101-jdbc41' 
    test "org.grails:grails-datastore-test-support:1.0.2-grails-2.4" 
} 

plugins { 
    // plugins for the build system only 
    build ":tomcat:7.0.70" // or ":tomcat:8.0.22" 

    // plugins for the compile step 
    compile ":scaffolding:2.1.2" 
    compile ':cache:1.1.8' 
    // asset-pipeline 2.0+ requires Java 7, use version 1.9.x with Java 6 
    compile ":asset-pipeline:2.5.7" 

    // plugins needed at runtime but not for compilation 
    runtime ":hibernate4:4.3.10" // or ":hibernate:3.6.10.18" 
    runtime ":database-migration:1.4.0" 
    runtime ":jquery:1.11.1" 

    // Uncomment these to enable additional asset-pipeline capabilities 
    //compile ":sass-asset-pipeline:1.9.0" 
    //compile ":less-asset-pipeline:1.10.0" 
    //compile ":coffee-asset-pipeline:1.8.0" 
    //compile ":handlebars-asset-pipeline:1.3.0.3" 
} 
} 

하지만 아래 명령 프롬프트에서 오류가 발생합니다.

[localhost-startStop-1] ERROR pool.ConnectionPool - Unable to create initial connections of pool. 
Message: class com.mysql.jdbc.Driver 
Line | Method 
->> 266 | run  in java.util.concurrent.FutureTask 

    1149 | runWorker in java.util.concurrent.ThreadPoolExecutor 
    624 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker 
    748 | run  in java.lang.Thread 
    Caused by ClassNotFoundException: class com.mysql.jdbc.Driver 
    ->> 381 | findClass in java.net.URLClassLoader 

    424 | loadClass in java.lang.ClassLoader 
    348 | forName . in java.lang.Class 
    266 | run  in java.util.concurrent.FutureTask 
    1149 | runWorker in java.util.concurrent.ThreadPoolExecutor 
    624 | run  in java.util.concurrent.ThreadPoolExecutor$Worker 
    748 | run . . . in java.lang.Thread 
    Error | 
    2017-11-21 23:22:20,629 [localhost-startStop-1] ERROR 
    pool.ConnectionPool - Unable to create initial connections of pool. 
    Message: class com.mysql.jdbc.Driver 
    Line | Method 
->>266 | run  in java.util.concurrent.FutureTask 

나는 Grails의 2.5.6 버전을 사용하고, 나는 나를 도와 well.Please 나의 LIB Grails 애플리케이션의 폴더와 JAVA_HOME에 MySQL의 커넥터 - 자바-5.1.44-bin.jar를 파일을 추가 한 이를 해결하고 내 데이터베이스에 연결하여 데이터를 저장하십시오. 미리 감사드립니다.

+0

build.gradle은 무엇입니까? – devbd

+0

그는 DataSource와 BuildConfig 그루비 파일 때문에 아마도 grails 2.X를 사용하고 있습니다 – user615274

+0

전체 스택 추적을 제공하십시오. 드라이버가 빌드 경로에 존재하지 않는 것 같습니다. 'ClassNotFoundException : Caused by class com.mysql.jdbc.Driver' – devbd

답변

1

grails refresh-dependencies ceck을

grails clean을 시도하고 mysql:mysql-connector-java:5.1.29가 빌드 경로에있는 항아리를 확인합니다.

업데이트 : lib에 mysql-connector-java : 5.x.x jar가 있거나 그 반대의 경우에는 BuildConfig.groovy에서 mysql 종속성을 제거하십시오.

여러 개의 Jar 파일로 인해 문제가 발생합니다.

관련 게시물 : 내 Grails 애플리케이션의 lib 폴더에서 jar 파일을 제거하고 기본 MySQL의 연결을 사용할 때 그것은 나를 위해 일한

Unable to create initial connections of pool issues in Grails

java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

+0

안녕하세요, @devbd, 제 편집 된 질문을 확인하십시오. 이 대답은 나를 위해 작동하지 않았다 :-( – Manju

0

데이터베이스를 먼저 수정해야합니다. Grails는 기존 데이터베이스에 연결하려고 시도하지만 데이터베이스를 만들 수는 없습니다. 당신이 리눅스/유닉스를 사용하는 경우

실행 터미널에서 이러한 명령은, 슈퍼 유저가되어 다음을 실행 : 당신은이 모든 일을 한 경우, 사용자 이름/암호 콤보를 확인하십시오

CREATE DATABASE librarydb; 

CREATE USER 'test'@'test' IDENTIFIED BY 'test'; 

GRANT ALL ON librarydb.* TO [email protected]; 

.

터미널 실행이에

:

mysql -u test -p test하고 데이터베이스에 연결할 수 있는지 확인합니다.

+0

'알 수없는 데이터베이스'xxx '또는'사용자 '에 대한 액세스가 거부되었습니다'와 같은 예외는 제공하지 않습니다. '@ '로컬 호스트'...ClassNotFoundException에 의해 발생 함 : class com.mysql.jdbc.Driver' – devbd

0

. 즉 username = "root"이고 password = "root"입니다. @devbd에게 감사드립니다.

+0

기쁘다. 코멘트 또는 대답을 upvote하시기 바랍니다. – devbd

관련 문제