我在使用flyway和maven插件初始化和遷移HSQLDB數據庫時遇到了問題。爲什麼Maven Flyway插件無法遷移我的Hsqldb數據庫?
我有XML的此塊在我的pom.xml:
<plugin>
<groupId>com.googlecode.flyway</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>1.5</version>
<configuration>
<driver>org.hsqldb.jdbcDriver</driver>
<url>jdbc:hsqldb:file:${project.build.directory}/db/margarita;shutdown=true</url>
<user>develop</user>
<password></password>
<schemas>margarita</schemas>
<table>schema_history</table>
<initialVersion>118</initialVersion>
<initialDescription>Base Migration</initialDescription>
</configuration>
<dependencies>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.2.8</version>
</dependency>
</dependencies>
</plugin>
當我運行此命令:
mvn flyway:migrate
我收到此錯誤信息:
[INFO] --- flyway-maven-plugin:1.5:migrate (default-cli) @ Margarita ---
[INFO] Database closed
[INFO] Hsql does not support locking. No concurrent migration supported.
[INFO] Database closed
[ERROR] com.googlecode.flyway.core.exception.FlywayException: Error executing statement at line 17: CREATE TABLE MARGARITA.schema_history (
version VARCHAR(20) PRIMARY KEY,
description VARCHAR(100),
type VARCHAR(10) NOT NULL,
script VARCHAR(200) NOT NULL,
checksum INT,
installed_by VARCHAR(30) NOT NULL,
installed_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
execution_time INT,
state VARCHAR(15) NOT NULL,
current_version BIT NOT NULL,
CONSTRAINT MARGARITA.schema_history_script_unique UNIQUE (script)
)
[ERROR] Caused by org.hsqldb.HsqlException: invalid schema name: MARGARITA
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.550s
[INFO] Finished at: Tue Mar 20 21:54:06 EDT 2012
[INFO] Final Memory: 6M/81M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.googlecode.flyway:flyway-maven-plugin:1.5:migrate (default-cli) on project Margarita: Flyway Error: com.googlecode.flyway.core.exception.FlywayException: Error executing statement at line 17: CREATE TABLE MARGARITA.schema_history (
[ERROR] version VARCHAR(20) PRIMARY KEY,
[ERROR] description VARCHAR(100),
[ERROR] type VARCHAR(10) NOT NULL,
[ERROR] script VARCHAR(200) NOT NULL,
[ERROR] checksum INT,
[ERROR] installed_by VARCHAR(30) NOT NULL,
[ERROR] installed_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
[ERROR] execution_time INT,
[ERROR] state VARCHAR(15) NOT NULL,
[ERROR] current_version BIT NOT NULL,
[ERROR] CONSTRAINT MARGARITA.schema_history_script_unique UNIQUE (script)
[ERROR]): StatementCallback; uncategorized SQLException for SQL [CREATE TABLE MARGARITA.schema_history (
[ERROR] version VARCHAR(20) PRIMARY KEY,
[ERROR] description VARCHAR(100),
[ERROR] type VARCHAR(10) NOT NULL,
[ERROR] script VARCHAR(200) NOT NULL,
[ERROR] checksum INT,
[ERROR] installed_by VARCHAR(30) NOT NULL,
[ERROR] installed_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
[ERROR] execution_time INT,
[ERROR] state VARCHAR(15) NOT NULL,
[ERROR] current_version BIT NOT NULL,
[ERROR] CONSTRAINT MARGARITA.schema_history_script_unique UNIQUE (script)
[ERROR])]; SQL state [3F000]; error code [-4850]; invalid schema name: MARGARITA; nested exception is java.sql.SQLException: invalid schema name: MARGARITA
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
是這不是一個支持的過程?我認爲hsqldb會自動創建引用的模式,所以我很困惑。
或是執行'CREATE SCHEMA瑪格麗塔授權DBA':
mvn flyway:clean flyway:init flyway:migrate
它應該工作這裏看看.schema_history(...'聲明。 – fredt 2012-03-21 09:13:17
@fredt是的,對! – 2012-03-21 09:33:25
我認爲在這種情況下,fredt的解決方案是正確的,謝謝! – JBCP 2012-03-21 19:53:26