我想建立我們在命令行中運行遷飛來運行我們的遷移(由於一些限制,我的數據庫管理員把我的)在命令行運行遷飛沒有找到SpringJdbcMigrations
的過程我大部分工作很好,查找和運行SQL和正常的JdbcMigrations,但它不會識別我的SpringJdbcMigrations,聲稱它沒有Spring Jdbc。
下面,找到飛行用我的文件結構,屬性和調試輸出:
文件結構
flyway.properties
#
# License removed for brevity
# Jdbc url to use to connect to the database
flyway.url=jdbc:mysql://localhost:3306/my_project
# User to use to connect to the database (default: <<null>>)
flyway.user=root
# Password to use to connect to the database (default: <<null>>)
flyway.password=XXXXXXX
# Comma-separated list of locations to scan recursively for migrations. (default: filesystem:<<INSTALL-DIR>>/sql)
# The location type is determined by its prefix.
# Unprefixed locations or locations starting with classpath: point to a package on the classpath and may contain both sql and java-based migrations.
# Locations starting with filesystem: point to a directory on the filesystem and may only contain sql migrations.
flyway.locations=classpath:com.mycompany.myproject.db.migration,filesystem:sql
# NOTE: All other properties are left as default
調試輸出:
[localhost ~/Documents/ws-src/flyway-3.0] ./flyway migrate -X
/usr/bin/tput
Flyway (Command-line Tool) v.3.0
DEBUG: Adding location to classpath: /Users/biggusjimmus/Documents/ws-src/flyway-3.0/bin/../jars/java-migration.jar
DEBUG: Adding location to classpath: /Users/biggusjimmus/Documents/ws-src/flyway-3.0/bin/../jars/mysql-connector-java-5.1.26-bin.jar
#
# NOTE: This library SHOULD enable Spring Jdbc, as far as I know.
#
DEBUG: Adding location to classpath: /Users/biggusjimmus/Documents/ws-src/flyway-3.0/bin/../jars/spring-jdbc-4.0.0.RELEASE.jar
Database: jdbc:mysql://localhost:3306/myproject (MySQL 5.6)
DEBUG: DDL Transactions Supported: false
DEBUG: Schema: myproject
#
#NOTE: spring-jdbc-4.0.0.RELEASE.jar was apparently added to the classpath above!
#
DEBUG: Spring Jdbc available: false
DEBUG: Spring Jdbc available: false
DEBUG: Validating migrations ...
DEBUG: Scanning for classpath resources at 'com/mycompany/myproject/db/migration' (Prefix: 'V', Suffix: '.sql')
DEBUG: Scanning URL: jar:file:/Users/biggusjimmus/Documents/ws-src/flyway-3.0/bin/../jars/java-migration.jar!/com/mycompany/myproject/db/migration
DEBUG: JBoss VFS v2 available: false
DEBUG: Filtering out resource: com/mycompany/myproject/db/migration/ (filename:)
DEBUG: Filtering out resource: com/mycompany/myproject/db/migration/V1_1_4_2__Java_Spring_Example.class (filename: V1_1_4_2__Java_Spring_Example.class)
DEBUG: Filtering out resource: com/mycompany/myproject/db/migration/V1_1_4_3__Java_NoSpring_Example.class (filename: V1_1_4_3__Java_NoSpring_Example.class)
DEBUG: Scanning for classes at 'com/mycompany/myproject/db/migration' (Implementing: 'org.flywaydb.core.api.migration.jdbc.JdbcMigration')
DEBUG: Scanning URL: jar:file:/Users/biggusjimmus/Documents/ws-src/flyway-3.0/bin/../jars/java-migration.jar!/com/mycompany/myproject/db/migration
DEBUG: JBoss VFS v2 available: false
DEBUG: Filtering out resource: com/mycompany/myproject/db/migration/ (filename:)
#
# NOTE: Why did it find the NoSpring example (which implements JdbcMigration),
# but not the spring example (which implements SpringJdbcMigration), even though
# it's in the same package?
# Presumably because it doesn't think it has Spring Jdbc support
#
DEBUG: Found class: com.mycompany.myproject.db.migration.V1_1_4_3__Java_NoSpring_Example
DEBUG: Scanning for filesystem resources at 'sql' (Prefix: 'V', Suffix: '.sql')
DEBUG: Scanning for resources in path: sql (sql)
DEBUG: Filtering out resource: sql/.DS_Store (filename: .DS_Store)
DEBUG: Found filesystem resource: sql/V1_1_3__Base_version.sql
DEBUG: Found filesystem resource: sql/V1_1_4_1__SQL_Example.sql
Validated 3 migrations (execution time 00:00.052s)
DEBUG: Schema `myproject` already exists. Skipping schema creation.
DEBUG: Locking table `myproject`.`schema_version`...
DEBUG: Lock acquired for table `myproject`.`schema_version`
Current version of schema `myproject`: 1.1.3
Migrating schema `myproject` to version 1.1.4.1
DEBUG: Successfully completed and committed migration of schema `myproject` to version 1.1.4.1
DEBUG: MetaData table `myproject`.`schema_version` successfully updated to reflect changes
DEBUG: Locking table `myproject`.`schema_version`...
DEBUG: Lock acquired for table `myproject`.`schema_version`
Migrating schema `myproject` to version 1.1.4.3
DEBUG: Successfully completed and committed migration of schema `myproject` to version 1.1.4.3
DEBUG: MetaData table `myproject`.`schema_version` successfully updated to reflect changes
DEBUG: Locking table `myproject`.`schema_version`...
DEBUG: Lock acquired for table `myproject`.`schema_version`
Successfully applied 2 migrations to schema `myproject` (execution time 00:00.049s).
如果還有其他信息我可以提供可能有用的信息,請讓我知道。
編輯: 我也嘗試修改殼shell腳本直接將spring-jdbc jar添加到其classpath。運行該修改導致沒有明顯的變化。
與該改變運行(在更新的數據庫之上,並沒有調試標誌)產生這樣的結果:
[localhost ~/Documents/ws-src/flyway-3.0] sh -x flyway migrate
++ pwd
+ OLDDIR=/Users/biggusjimmus/Documents/ws-src/flyway-3.0
+ PRG=flyway
+ '[' -h flyway ']'
++ dirname flyway
+ INSTALLDIR=.
+ cd .
+ '[' -z '' ']'
+ JAVA_CMD=java
+ command -v tput
/usr/bin/tput
++ tput cols
+ CONSOLE_WIDTH=116
+ java -cp ./bin/flyway-commandline-3.0.jar:./bin/flyway-core-3.0.jar:./jars/spring-jdbc-4.0.0.RELEASE.jar org.flywaydb.commandline.Main migrate -consoleWidth=116
Flyway (Command-line Tool) v.3.0
Database: jdbc:mysql://localhost:3306/myproject (MySQL 5.6)
Validated 3 migrations (execution time 00:00.052s)
Current version of schema `myproject`: 1.1.4.3
Schema `myproject` is up to date. No migration necessary.
+ JAVA_EXIT_CODE=0
+ cd /Users/biggusjimmus/Documents/ws-src/flyway-3.0
+ exit 0
我也提出了flyway的問題,以防這是一個錯誤而不是配置問題:https://github.com/flyway/flyway/issues/783 – biggusjimmus
請參閱我對該問題的評論。 –