我正在使用带有flyway-gradle-plugin(3.2.1)的Gradle脚本(版本2.3)将数据库更改部署到Amazon Redshift Cluster数据库中。
Flyway plugin: 'org.flywaydb:flyway-gradle-plugin:3.2.1'
Driver jar:'RedshiftJDBC41-1.1.2.0002.jar'
Driver class: 'com.amazon.redshift.jdbc41.Driver'
现在问题是元数据表被创建两次,即在(a)元数据和(b)custome sql脚本被执行之后再次创建。
执行(gradle clean build flywayMigrate --debug)后,只存在“test_schema.test_tbl”表,但Redshift数据库中不存在“test_schema.DB_SCHEMA_VER”。 请建议。
完整的堆栈跟踪如下:
14:48:29.327 [INFO] [org.flywaydb.core.internal.metadatatable.MetaDataTableImpl] Creating Metadata table: "test_schema"."DB_SCHEMA_VER"
14:48:29.342 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Found statement at line 17: CREATE TABLE "test_schema"."DB_SCHEMA_VER" (
"version_rank" INT NOT NULL,
"installed_rank" INT NOT NULL,
"version" VARCHAR(50) NOT NULL,
"description" VARCHAR(200) NOT NULL,
"type" VARCHAR(20) NOT NULL,
"script" VARCHAR(1000) NOT NULL,
"checksum" INTEGER,
"installed_by" VARCHAR(100) NOT NULL,
"installed_on" TIMESTAMP NOT NULL DEFAULT getdate(),
"execution_time" INTEGER NOT NULL,
"success" BOOLEAN NOT NULL
)
14:48:29.342 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Found statement at line 30: ALTER TABLE "test_schema"."DB_SCHEMA_VER" ADD CONSTRAINT "DB_SCHEMA_VER_pk" PRIMARY KEY ("version")
14:48:29.342 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Executing SQL: CREATE TABLE "test_schema"."DB_SCHEMA_VER" (
"version_rank" INT NOT NULL,
"installed_rank" INT NOT NULL,
"version" VARCHAR(50) NOT NULL,
"description" VARCHAR(200) NOT NULL,
"type" VARCHAR(20) NOT NULL,
"script" VARCHAR(1000) NOT NULL,
"checksum" INTEGER,
"installed_by" VARCHAR(100) NOT NULL,
"installed_on" TIMESTAMP NOT NULL DEFAULT getdate(),
"execution_time" INTEGER NOT NULL,
"success" BOOLEAN NOT NULL
)
14:48:29.389 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Executing SQL: ALTER TABLE "test_schema"."DB_SCHEMA_VER" ADD CONSTRAINT "DB_SCHEMA_VER_pk" PRIMARY KEY ("version")
14:48:29.420 [DEBUG] [org.flywaydb.core.internal.metadatatable.MetaDataTableImpl] Metadata table "test_schema"."DB_SCHEMA_VER" created.
14:48:29.420 [DEBUG] [org.flywaydb.core.internal.dbsupport.Table] Locking table "test_schema"."DB_SCHEMA_VER"...
14:48:29.482 [DEBUG] [org.flywaydb.core.internal.dbsupport.Table] Lock acquired for table "test_schema"."DB_SCHEMA_VER"
14:48:29.498 [INFO] [org.flywaydb.core.internal.command.DbMigrate] Current version of schema "test_schema": << Empty Schema >>
14:48:29.498 [INFO] [org.flywaydb.core.internal.command.DbMigrate] Migrating schema "test_schema" to version 1.0.0.0001 - Create tables
14:48:29.498 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Found statement at line 8: create table test_schema.test_tbl
(
code varchar(30),
description varchar(50)
)
14:48:29.498 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Found statement at line 14: insert into test_schema.test_tbl (code, description) values ('a1', 'test description 1')
14:48:29.498 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Found statement at line 15: insert into test_schema.test_tbl (code, description) values ('a2', 'test description 2')
14:48:29.514 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Executing SQL: create table test_schema.test_tbl
(
code varchar(30),
description varchar(50)
)
14:48:29.545 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Executing SQL: insert into test_schema.test_tbl (code, description) values ('a1', 'test description 1')
14:48:29.576 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Executing SQL: insert into test_schema.test_tbl (code, description) values ('a2', 'test description 2')
14:48:29.716 [DEBUG] [org.flywaydb.core.internal.command.DbMigrate] Successfully completed and committed migration of schema "test_schema" to version 1.0.0.0001
14:48:29.732 [INFO] [org.flywaydb.core.internal.metadatatable.MetaDataTableImpl] Creating Metadata table: "test_schema"."DB_SCHEMA_VER"
14:48:29.732 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Found statement at line 17: CREATE TABLE "test_schema"."DB_SCHEMA_VER" (
"version_rank" INT NOT NULL,
"installed_rank" INT NOT NULL,
"version" VARCHAR(50) NOT NULL,
"description" VARCHAR(200) NOT NULL,
"type" VARCHAR(20) NOT NULL,
"script" VARCHAR(1000) NOT NULL,
"checksum" INTEGER,
"installed_by" VARCHAR(100) NOT NULL,
"installed_on" TIMESTAMP NOT NULL DEFAULT getdate(),
"execution_time" INTEGER NOT NULL,
"success" BOOLEAN NOT NULL
)
14:48:29.732 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Found statement at line 30: ALTER TABLE "test_schema"."DB_SCHEMA_VER" ADD CONSTRAINT "DB_SCHEMA_VER_pk" PRIMARY KEY ("version")
14:48:29.732 [DEBUG] [org.flywaydb.core.internal.dbsupport.SqlScript] Executing SQL: CREATE TABLE "test_schema"."DB_SCHEMA_VER" (
"version_rank" INT NOT NULL,
"installed_rank" INT NOT NULL,
"version" VARCHAR(50) NOT NULL,
"description" VARCHAR(200) NOT NULL,
"type" VARCHAR(20) NOT NULL,
"script" VARCHAR(1000) NOT NULL,
"checksum" INTEGER,
"installed_by" VARCHAR(100) NOT NULL,
"installed_on" TIMESTAMP NOT NULL DEFAULT getdate(),
"execution_time" INTEGER NOT NULL,
"success" BOOLEAN NOT NULL
)
14:48:29.981 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':flywayMigrate'
14:48:29.981 [LIFECYCLE] [class org.gradle.TaskExecutionLogger] :flywayMigrate FAILED
14:48:29.981 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :flywayMigrate (Thread[main,5,main]) completed. Took 1.87 secs.
14:48:29.981 [DEBUG] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] Task worker [Thread[main,5,main]] finished, busy: 2.774 secs, idle: 0.016 secs
14:48:29.997 [LIFECYCLE] [org.gradle.BuildResultLogger]
14:48:29.997 [LIFECYCLE] [org.gradle.BuildResultLogger] BUILD FAILED
答案 0 :(得分:0)
如果模式或表名包含大小写混合的字符,我注意到Redshift / Flyway会发生这种情况。
尝试配置全小写的元数据表名称,例如test_schema.db_schema_ver
。