Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java flyway-mysqldump迁移_Java_Mysql_Mysqldump_Database Migration_Flyway - Fatal编程技术网

Java flyway-mysqldump迁移

Java flyway-mysqldump迁移,java,mysql,mysqldump,database-migration,flyway,Java,Mysql,Mysqldump,Database Migration,Flyway,我越了解flyway如何进行数据库迁移,就越喜欢它 我试图让flyway读取从mysqldump-d生成的迁移,我偶然发现了一些奇怪的行为 主页上写着 mysqldump导出的DDL可以在Flyway迁移中使用,无需更改 我的经验有点不同如何将mysqldump生成的文件与flyway一起使用? 我所尝试的: 我试着通过使用 mysqldump -h host --user=user -p -d --hex-blob databasename > V1__Basic.sql 这确实有效

我越了解flyway如何进行数据库迁移,就越喜欢它

我试图让flyway读取从mysqldump-d生成的迁移,我偶然发现了一些奇怪的行为

主页上写着

mysqldump导出的DDL可以在Flyway迁移中使用,无需更改

我的经验有点不同如何将mysqldump生成的文件与flyway一起使用?


我所尝试的:

我试着通过使用

mysqldump -h host --user=user -p -d --hex-blob databasename > V1__Basic.sql
这确实有效,并给了我一个类似以下内容的文件(是的,这是Activiti:)的数据库方案):

等等

我有flyway设置(简单的spring集成),它正在收集文件。 但是它什么也不做(不执行sql):

如果我删除所有内容,直到
CREATE TABLE
flyway不喜欢语法

ERROR @ 14 Mar 2013 22:45:01,270 @ com.googlecode.flyway.core.command.DbMigrate - Caused by org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE TABLE ""ACT_GE_BYTEARRAY"" (
  ""ID_"" VARCHAR(64) COLLATE[*] UTF8_BIN NOT NULL DEFAULT '',
如何将mysqldump的输出转换成flyway喜欢的格式?
谢谢大家

Flyway的解析器是DB特定的。由于您试图导入到H2中,所以它尝试解析H2语法,而不是mysql语法。将它导入mysql数据库,您就可以开始了。

我有用于测试和生产的mysql和用于单元测试的H2。我的想法是从生产数据库中提取DDL,并将其用作所有环境的基础。如果我理解正确,这是行不通的。这是否意味着我必须为V1和所有其他版本的单元测试和生产使用单独的脚本。这是否正确?您可以清理转储,使其与H2兼容,并确保将来的迁移使用与两个DBs兼容的语法。或者选择更好的选择:在dev中使用mysql,消除prod环境的另一个差异。这就是我现在要做的,谢谢!我清理了MySQL转储。不过,将来将其迁移到MySQL是有意义的。
INFO  @ 14 Mar 2013 22:34:41,646 @ com.googlecode.flyway.core.command.DbMigrate - Current version of schema "PUBLIC": << Empty Schema >>
INFO  @ 14 Mar 2013 22:34:41,647 @ com.googlecode.flyway.core.command.DbMigrate - Migrating schema "PUBLIC" to version 1
DEBUG @ 14 Mar 2013 22:34:41,649 @ com.googlecode.flyway.core.command.DbMigrate - Successfully completed and committed migration of schema "PUBLIC" to version 1
DEBUG @ 14 Mar 2013 22:34:41,651 @ com.googlecode.flyway.core.command.DbMigrate - Finished migrating schema "PUBLIC" to version 1 (execution time 00:00.002s)
DEBUG @ 14 Mar 2013 22:34:41,698 @ com.googlecode.flyway.core.dbsupport.SqlScript - Found statement at line 1: DROP TABLE IF EXISTS `ACT_GE_BYTEARRAY`
DEBUG @ 14 Mar 2013 22:34:41,698 @ com.googlecode.flyway.core.dbsupport.SqlScript - Executing SQL: DROP TABLE IF EXISTS `ACT_GE_BYTEARRAY`
DEBUG @ 14 Mar 2013 22:34:41,700 @ com.googlecode.flyway.core.command.DbMigrate - Successfully completed and committed migration of schema "PUBLIC" to version 1.1
DEBUG @ 14 Mar 2013 22:34:41,700 @ com.googlecode.flyway.core.command.DbMigrate - Finished migrating schema "PUBLIC" to version 1.1 (execution time 00:00.004s)
ERROR @ 14 Mar 2013 22:45:01,270 @ com.googlecode.flyway.core.command.DbMigrate - Caused by org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE TABLE ""ACT_GE_BYTEARRAY"" (
  ""ID_"" VARCHAR(64) COLLATE[*] UTF8_BIN NOT NULL DEFAULT '',