【问题标题】:Gradle flywayMigrate gives out of memory exceptionGradle flywayMigrate 给出内存不足异常
【发布时间】:2017-06-25 06:18:21
【问题描述】:

我试图使用 flyway 和 gradle 设置数据库迁移。任务失败并出现以下错误

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':flywayMigrate'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:84)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:61)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:45)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:233)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:215)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:74)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:55)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: java.lang.OutOfMemoryError: Java heap space
        at org.flywaydb.core.internal.util.FileCopyUtils.copy(FileCopyUtils.java:117)
        at org.flywaydb.core.internal.util.FileCopyUtils.copyToByteArray(FileCopyUtils.java:68)
        at org.flywaydb.core.internal.util.scanner.classpath.ClassPathResource.loadAsBytes(ClassPathResource.java:100)
        at org.flywaydb.core.internal.resolver.sql.SqlMigrationResolver.extractMigrationInfo(SqlMigrationResolver.java:140)
        at org.flywaydb.core.internal.resolver.sql.SqlMigrationResolver.resolveMigrations(SqlMigrationResolver.java:112)
        at org.flywaydb.core.internal.resolver.sql.SqlMigrationResolver.resolveMigrations(SqlMigrationResolver.java:41)
        at org.flywaydb.core.internal.resolver.CompositeMigrationResolver.collectMigrations(CompositeMigrationResolver.java:126)
        at org.flywaydb.core.internal.resolver.CompositeMigrationResolver.doFindAvailableMigrations(CompositeMigrationResolver.java:108)
        at org.flywaydb.core.internal.resolver.CompositeMigrationResolver.resolveMigrations(CompositeMigrationResolver.java:94)
        at org.flywaydb.core.internal.resolver.CompositeMigrationResolver.resolveMigrations(CompositeMigrationResolver.java:42)
        at org.flywaydb.core.internal.info.MigrationInfoServiceImpl.refresh(MigrationInfoServiceImpl.java:96)
        at org.flywaydb.core.internal.command.DbValidate$2.doInTransaction(DbValidate.java:136)
        at org.flywaydb.core.internal.command.DbValidate$2.doInTransaction(DbValidate.java:131)
        at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:72)
        at org.flywaydb.core.internal.command.DbValidate.validate(DbValidate.java:131)
        at org.flywaydb.core.Flyway.doValidate(Flyway.java:1014)
        at org.flywaydb.core.Flyway.access$300(Flyway.java:52)
        at org.flywaydb.core.Flyway$1.execute(Flyway.java:925)
        at org.flywaydb.core.Flyway$1.execute(Flyway.java:919)
        at org.flywaydb.core.Flyway.execute(Flyway.java:1320)
        at org.flywaydb.core.Flyway.migrate(Flyway.java:919)
        at org.flywaydb.core.Flyway$migrate$0.call(Unknown Source)
        at org.flywaydb.gradle.task.FlywayMigrateTask.run(FlywayMigrateTask.groovy:30)
        at org.flywaydb.gradle.task.FlywayMigrateTask$run.callCurrent(Unknown Source)
        at org.flywaydb.gradle.task.AbstractFlywayTask.runTask(AbstractFlywayTask.groovy:75)

我尝试了以下

echo $GRADLE_OPTS
-Xmx2048m

echo $JAVA_OPTS
-Xmx2048m

也为 gradle 属性添加了一些设置:

cat ~/.gradle/gradle.properties 
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.jvmargs=-Xms1024m -Xmx2048m

这没有帮助,请问有什么建议吗?

【问题讨论】:

    标签: java gradle flyway


    【解决方案1】:
    buildscript {
        dependencies {
            classpath 'mysql:mysql-connector-java:5.1.34'
        }
    }
    
    
    plugins {
        id "org.flywaydb.flyway" version "4.0.3"
    }
    
    flyway {
        url = 'jdbc:mysql://localhost:3306/mydb'
        user = 'root'
        password = 'abc!23'
        schemas = ['mydb']
        baselineVersion = 1
        baselineDescription = "Baselining myDB Schema"
    }
    

    基本上,我使用的是一个非常旧版本的 FlyWay,它导致了 Java 堆空间 - 我的坏。 上面的这个构建脚本可以成为任何想要在 MYSQL 上使用 FlyWay 执行数据库迁移的人的资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      相关资源
      最近更新 更多