2014-09-22 2 views
1

난 그냥 flywaydb를 사용하기 시작하고 테스트를 생성하고 쿼리를 삽입하여 시도하고 마이그레이션을 발사하지만 내 모든 만드는 테이블 스크립트 :(DDL 트랜잭션 지원을 설정하는 방법은 무엇입니까?

내가 디버그에 대한 -X 옵션을 사용을 무시하고 이상한 라인을 발견 단지에 대한 DEBUG: DDL Transactions Supported: false 난 사실 한 경우

그것을 작동합니다 보인다.

예를 어떻게 제거 할 경우 사람이이 문제에 직면합니까? 내가 함께, 새로운 스키마에 이런 짓을 한 을 청소 초기화-마이그레이션 전체 스택 추적 :

[[email protected] flyway]$ ./flyway -X clean 
/usr/bin/tput 
Flyway (Command-line Tool) v.3.0 

DEBUG: Adding location to classpath: /home/ec2-user/installables/flyway-3.0/bin/../jars/mysql-connector-java-5.1.26.jar 
Database: jdbc:mysql://0.0.0.0:3306/test (MySQL 5.5) 
DEBUG: DDL Transactions Supported: false 
DEBUG: Schema: test 
DEBUG: Cleaning schema `test` ... 
Cleaned schema `test` (execution time 00:00.025s) 

[[email protected] flyway]$ 
[[email protected] flyway]$ ./flyway -X init 
/usr/bin/tput 
Flyway (Command-line Tool) v.3.0 

DEBUG: Adding location to classpath: /home/ec2-user/installables/flyway-3.0/bin/../jars/mysql-connector-java-5.1.26.jar 
Database: jdbc:mysql://0.0.0.0:3306/test (MySQL 5.5) 
DEBUG: DDL Transactions Supported: false 
DEBUG: Schema: test 
DEBUG: Schema `test` already exists. Skipping schema creation. 
Creating Metadata table: `test`.`schema_version` 
DEBUG: Found statement at line 17: CREATE TABLE `test`.`schema_version` (
    `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` INT, 
    `installed_by` VARCHAR(100) NOT NULL, 
    `installed_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `execution_time` INT NOT NULL, 
    `success` BOOL NOT NULL 
) ENGINE=InnoDB 
DEBUG: Found statement at line 30: ALTER TABLE `test`.`schema_version` ADD CONSTRAINT `schema_version_pk` PRIMARY KEY (`version`) 
DEBUG: Found statement at line 32: CREATE INDEX `schema_version_vr_idx` ON `test`.`schema_version` (`version_rank`) 
DEBUG: Found statement at line 33: CREATE INDEX `schema_version_ir_idx` ON `test`.`schema_version` (`installed_rank`) 
DEBUG: Found statement at line 34: CREATE INDEX `schema_version_s_idx` ON `test`.`schema_version` (`success`) 
DEBUG: Executing SQL: CREATE TABLE `test`.`schema_version` (
    `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` INT, 
    `installed_by` VARCHAR(100) NOT NULL, 
    `installed_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `execution_time` INT NOT NULL, 
    `success` BOOL NOT NULL 
) ENGINE=InnoDB 
DEBUG: Executing SQL: ALTER TABLE `test`.`schema_version` ADD CONSTRAINT `schema_version_pk` PRIMARY KEY (`version`) 
DEBUG: Executing SQL: CREATE INDEX `schema_version_vr_idx` ON `test`.`schema_version` (`version_rank`) 
DEBUG: Executing SQL: CREATE INDEX `schema_version_ir_idx` ON `test`.`schema_version` (`installed_rank`) 
DEBUG: Executing SQL: CREATE INDEX `schema_version_s_idx` ON `test`.`schema_version` (`success`) 
DEBUG: Metadata table `test`.`schema_version` created. 
DEBUG: MetaData table `test`.`schema_version` successfully updated to reflect changes 
Schema initialized with version: 1 
[[email protected] flyway]$ ./flyway -X migrate 
/usr/bin/tput 
Flyway (Command-line Tool) v.3.0 

DEBUG: Adding location to classpath: /home/ec2-user/installables/flyway-3.0/bin/../jars/mysql-connector-java-5.1.26.jar 
Database: jdbc:mysql://0.0.0.0:3306/test (MySQL 5.5) 
DEBUG: DDL Transactions Supported: false 
DEBUG: Schema: test 
DEBUG: Spring Jdbc available: false 
DEBUG: Validating migrations ... 
DEBUG: Scanning for filesystem resources at '/home/ec2-user/installables/flyway-3.0/bin/../sql' (Prefix: 'V', Suffix: '.sql') 
DEBUG: Scanning for resources in path: /home/ec2-user/installables/flyway-3.0/bin/../sql (/home/ec2-user/installables/flyway-3.0/bin/../sql) 
DEBUG: Found filesystem resource: /home/ec2-user/installables/flyway-3.0/bin/../sql/V1__cr_tbl.sql 
DEBUG: Found filesystem resource: /home/ec2-user/installables/flyway-3.0/bin/../sql/V2__Add_people.sql 
Validated 2 migrations (execution time 00:00.032s) 
DEBUG: Schema `test` already exists. Skipping schema creation. 
DEBUG: Locking table `test`.`schema_version`... 
DEBUG: Lock acquired for table `test`.`schema_version` 
Current version of schema `test`: 1 
Migrating schema `test` to version 2 
DEBUG: Found statement at line 1: insert into PERSON (ID, NAME) values (1, 'Axel') 
DEBUG: Found statement at line 2: insert into PERSON (ID, NAME) values (2, 'Mr. Foo') 
DEBUG: Found statement at line 3: insert into PERSON (ID, NAME) values (3, 'Ms. Bar') 
DEBUG: Executing SQL: insert into PERSON (ID, NAME) values (1, 'Axel') 
DEBUG: Rolling back transaction... 
DEBUG: Transaction rolled back 
ERROR: Migration of schema `test` to version 2 failed! Please restore backups and roll back database and code! 
DEBUG: MetaData table `test`.`schema_version` successfully updated to reflect changes 
ERROR: Unexpected error 
org.flywaydb.core.internal.dbsupport.FlywaySqlScriptException: Error executing statement at line 1: insert into PERSON (ID, NAME) values (1, 'Axel') 
    at org.flywaydb.core.internal.dbsupport.SqlScript.execute(SqlScript.java:91) 
    at org.flywaydb.core.internal.resolver.sql.SqlMigrationExecutor.execute(SqlMigrationExecutor.java:73) 
    at org.flywaydb.core.internal.command.DbMigrate$5.doInTransaction(DbMigrate.java:287) 
    at org.flywaydb.core.internal.command.DbMigrate$5.doInTransaction(DbMigrate.java:285) 
    at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:72) 
    at org.flywaydb.core.internal.command.DbMigrate.applyMigration(DbMigrate.java:285) 
    at org.flywaydb.core.internal.command.DbMigrate.access$800(DbMigrate.java:46) 
    at org.flywaydb.core.internal.command.DbMigrate$2.doInTransaction(DbMigrate.java:207) 
    at org.flywaydb.core.internal.command.DbMigrate$2.doInTransaction(DbMigrate.java:156) 
    at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:72) 
    at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:156) 
    at org.flywaydb.core.Flyway$1.execute(Flyway.java:864) 
    at org.flywaydb.core.Flyway$1.execute(Flyway.java:811) 
    at org.flywaydb.core.Flyway.execute(Flyway.java:1171) 
    at org.flywaydb.core.Flyway.migrate(Flyway.java:811) 
    at org.flywaydb.commandline.Main.executeOperation(Main.java:120) 
    at org.flywaydb.commandline.Main.main(Main.java:88) 
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'test.PERSON' doesn't exist 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.Util.getInstance(Util.java:386) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2812) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2761) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:894) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:732) 
    at org.flywaydb.core.internal.dbsupport.JdbcTemplate.executeStatement(JdbcTemplate.java:235) 
    at org.flywaydb.core.internal.dbsupport.SqlScript.execute(SqlScript.java:89) 
    ... 16 more 

답변

0

이것은 단순히 DB가 DDL 트랜잭션을 지원하지 않는다는 것을 의미합니다. 필요한 경우 PostgreSQL, DB2 또는 SqlServer와 다른 것을 사용하십시오.

이제 스크립트가 선택되지 않은 이유에 관해서는 질문에서 알 수 없습니다.

시작하기 튜토리얼을 시작하고 성공하면 프로젝트에 적용하십시오.

+0

안녕하세요, Axel, 저는이 튜토리얼을 시작하기 전에 mysql과이 문제를 사용하고 있습니다. –

+0

다음 단계를 정확히 따르면 작동합니다. 이동 경로를 청소하고 다시 시도하십시오. –

+0

@ alex-fontaine, 나는 당신이 [이 링크] (http://flywaydb.org/getstarted/firststeps/commandline.html)에서 말한 것처럼 mysql을 사용하고있다. 초기화 및 깨끗한 일하고 있지만 V1__cr_tbl.sql을 무시하고 마이 그 레이션에 대한, 원래 질문 –