元数据表已多次创建,并且无法使用Amazon Redshift数据库

时间:2015-04-28 19:44:17

标签: amazon-redshift flyway

我正在使用带有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

1 个答案:

答案 0 :(得分:0)

如果模式或表名包含大小写混合的字符,我注意到Redshift / Flyway会发生这种情况。

尝试配置全小写的元数据表名称,例如test_schema.db_schema_ver