我們正在使用Cloud SQL進行GAE。在本地開發服務器上一切都很好。我們使用帶有靜態連接字符串的AppEngineDriver。由於Flyway能夠創建schema_version表,所以在生產環境中連接良好。Google App Engine GAE上的問題:無法鎖定表schema_version
但是,然後我們得到一個錯誤,它無法鎖定所述表。該表是空的。我們有3次遷移,沒有任何執行。
我們在Spring創建DataSource bean時使用Java配置樣式啓動遷移。
這裏是堆棧跟蹤。
非常感謝!
更新1:我在第一個結尾添加了一個相關的輔助堆棧跟蹤。
com.googlecode.flyway.core.api.FlywayException:無法鎖定表ourschema
。 schema_version
: java.sql.SQLException:準備好的語句協議中不支持此命令,但在com.google.cloud.sql.jdbc.internal.Exceptions.newSqlException(Exceptions.java:219) 處的 中不支持此命令。 cloud.sql.jdbc.internal.SqlProtoClient.check(SqlProtoClient.java:198) at com.google.cloud.sql.jdbc.internal.SqlProtoClient.executeSql(SqlProtoClient.java:87) at com.google.cloud。 sql.jdbc.internal.SqlProtoClient.executeSql(SqlProtoClient.java:76) com.google.cloud.sql.jdbc.Connection.executeSql(Connection.java:528) com.google.cloud.sql.jdbc。 PreparedStatement.executeSqlImpl(PreparedStatement.java:141) at com.google.cloud.sql.jdbc.Statement.executeImpl(Statement.java:154) at com.googlecode.flyway.core.dbsupport.JdbcTemplate.execute(JdbcTemplate.java:214) com.googlecode.flyway上的com.google.cloud.sql.jdbc.PreparedStatement.execute(PreparedStatement.java:122) 。在com.googlecode.flyway.core.dbsupport.Table.lock(Table.java:254) 處的com.googlecode.flyway.core.metadatatable上的core.dbsupport.mysql.MySQLTable.doLock(MySQLTable.java:58) 。 MetaDataTableImpl.lock(MetaDataTableImpl.java:121) at com.googlecode.flyway.core.command.DbMigrate $ 1.doInTransaction(DbMigrate.java:140) at com.googlecode.flyway.core.command.DbMigrate $ 1.doInTransaction( DbMigrate.java:138) at com.googlecode.flyway.core.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:54) at com.googlecode.flyway.core.command.DbMigrate.migrate( DbMigrate.java:137) at com.googlecode.flyway.core.Flyway $ 1.execute(Flyway.java:862) at com.googlecode.flyway.core.Flyway $ 1.execute(Flyway.java:815) at com.googlecode.flyway.core.Flyway.execute(Flyway.java:1177) at com.googlecode.flyway.core.Flyway.migrate(Flyway.java:815) at com.ourapplication.pilote.persistence.FlywayMigrationDataSourceInitializer。的PostInitialize(FlywayMigrationDataSourceInitializer.java:23) 在com.ourapplication.pilote.persistence.PersistenceConfiguration.initializeDataSource(PersistenceConfiguration.java:188) 在com.ourapplication.pilote.persistence.PersistenceConfiguration.dataSource(PersistenceConfiguration.java:175)
C aused by:java.sql.SQLException:準備好的語句協議中不支持此命令,但尚未在com.google.cloud.sql.jdbc.internal.Exceptions.newSqlException(Exceptions.java:219) 處運行 。 cloud.sql.jdbc.internal.SqlProtoClient.check(SqlProtoClient.java:198) ,位於com.google.cloud.sql.jdbc.internal。SqlProtoClient.executeSql(SqlProtoClient.java:87) at com.google.cloud.sql.jdbc.internal.SqlProtoClient.executeSql(SqlProtoClient.java:76) at com.google.cloud.sql.jdbc.Connection.executeSql( Connection.java:528) at com.google.cloud.sql.jdbc.PreparedStatement.executeSqlImpl(PreparedStatement.java:141) at com.google.cloud.sql.jdbc.Statement.executeImpl(Statement.java:154) at com.google.cloud.sql.jdbc.PreparedStatement.execute(PreparedStatement.java:122) at com.googlecode.flyway.core.dbsupport.JdbcTemplate.execute(JdbcTemplate.java:214) at com.googlecode。 flyway.core.dbsupport.mysql.MySQLTable.doLock(MySQLTable.java:58) at com.googlecode.flyway.core.dbsupport.Table.lock(Table.java:254)
最新的代碼已經收歸SELECT ... FOR UPDATE由於與LOCK TABLES額外的問題。下一個版本應該再次開箱即用。 – 2013-05-09 08:18:21