2017-11-21 8 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" 
} 
} 

私のコマンドプロンプトでは以下のエラーが表示されます。私はGrailsの2.5.6バージョンを使用しています、とwell.Pleaseは私を助けるように私は、GrailsのアプリケーションとJAVA_HOMEの私のlibフォルダ内のmysql-コネクタのjava-5.1.44-bin.jarをファイルを追加した

[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 

これを解決し、私のデータベースに接続してデータを保存します。前もって感謝します。

+0

あなたのbuild.gradleは何ですか? – devbd

+0

彼はDataSourceとBuildConfig groovyファイルのためにおそらくgrails 2.Xを使用しています – user615274

+0

完全なstacktraceを提供してください。ドライバがビルドパスに存在しないようです。 'ClassNotFoundExceptionによって引き起こされた:class com.mysql.jdbc.Driver' – devbd

答えて

1

はCECK grails refresh-dependenciesその後、grails clean

を試してみて、mysql:mysql-connector-java:5.1.29は、ビルド・パスにあるjarファイルを確認します。

更新日: 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は既存のデータベースに接続しようとしますが、データベースを作成することはできません。

あなたは、Linux/UNIXを使用している場合は、ターミナルで以下のコマンドを実行してスーパーユーザーになり、次のコマンドを実行します。

CREATE DATABASE librarydb; 

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

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

あなたはそれのすべてを行っている場合は、ユーザー名/パスワードのコンボを確認してください。

、端末の実行この中

mysql -u test -p test、あなたがデータベースに接続できるかどうかを確認します。

+0

'Unknown database 'xxx''や' user' testのためのアクセス拒否 ' 'localhost'' ...classNotFoundException:class com.mysql.jdbc.Driver' – devbd

0

。すなわち、私のデータソースファイルでは、username = "root"とpassword = "root"です。答えのための@devbdに感謝します。

+0

うまくいきました。コメントや回答をアップしてください。 – devbd

関連する問題