我正在使用flyway来管理mysql中的多模式数据库,我使用Maven配置了flyway。我列出了一个名为“元数据”的数据库作为<schemas>
标记中的第一个数据库,因此flyway会将schema_version
表放在此处。当我运行mvn flyway:migrate
时,我希望创建此表和metadata
数据库。 Flyway 2.1.1尝试创建表,但不首先创建数据库,因此失败。
[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 :(得分:3)
现在,创建模式支持是一个全有或全无的事情。如果缺少所有模式,则将创建所有模式,否则将不会创建任何模式。