2013-04-19 159 views
3

我正在使用flyway來管理mysql中的多模式數據庫,並且我使用Maven配置了flyway。我在<schemas>標籤中列出了一個名爲'元數據'的數據庫,因此flyway會將schema_version表放在這裏。當我運行mvn flyway:migrate我期待這個表metadata數據庫被創建。 Flyway 2.1.1嘗試創建表,但不會首先創建數據庫,因此失敗。Flyway:init不會創建模式數據庫

 
[DEBUG] Schemas: metadata,temp,OTHER_DBS_REDACTED 
[DEBUG] Schema `temp` already exists. Skipping schema creation. 
[DEBUG] Database: MySQL 5.6 
[ERROR] com.googlecode.flyway.core.api.FlywayException: Error setting current sc 
hema to `metadata` 
[ERROR] Caused by com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unk 
nown database 'metadata' 

我想mvn flyway:init可能產生的模式,但失敗了不同的,但顯然相關的錯誤。

 
[INFO] --- flyway-maven-plugin:2.1.1:init (default-cli) @ database --- 
[INFO] Creating Metadata table: `metadata`.`schema_version` 
[ERROR] com.googlecode.flyway.core.api.FlywayException: Error executing statement at line 17: CREATE TABLE `metadata`.`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 
[ERROR] Caused by com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'metadata' 

如果我create database metadata然後事情順利進行。事實上,我很享受飛行路線。手動運行一些SQL的缺點,有沒有辦法讓flyway創建這個數據庫?這只是一個錯誤?

TIA

+0

好問題,我目前有完全相同的問題 – 2013-04-20 01:32:46

回答

3

眼下創建架構的支持是一個全有或全無的事情。如果所有模式都丟失了,它們都將被創建,否則不會創建任何模式。

+1

啊!這是關鍵。我將'temp'列爲要管理的模式,並且默認情況下它已存在於數據庫中。 **從架構列表中刪除**,允許flyway創建數據庫和schema_version表。 – user2300902 2013-04-23 17:42:23