尽管设置了flyway.placeholderReplacement=false,但我仍然看到在Flyway的sql中没有为占位符表达式提供任何值的错误。
错误:意外错误org.flywaydb.core.api.FlywayException:没有为占位符表达式&条件提供任何值。检查你的配置!在org.flywaydb.core.internal.database.oracle.pro.SQLPlusPlaceholderReplacer.replacePlaceholders(SQLPlusPlaceholderReplacer.java:132) at org.flywaydb.core.internal.util.line.PlaceholderReplacingLine.getLine(PlaceholderReplacingLine.java:36) at org.flywaydb.core.internal.database.ExecutableSqlScript.extractStatements(ExecutableSqlScript.java:156) at org.flywaydb.core.internal.database.ExecutableSqlScript.(ExecutableSqlScript.java:133) at org.flywaydb.core.internal.database.oracle.OracleSqlScript.( org.flywaydb.core.internal.database.oracle.OracleDatabase.doCreateSqlScript(OracleDatabase.java:126),org.flywaydb.core.internal.database.Database.createSqlScript(Database.java:163),org.flywaydb.core.internal.resolver.sql.SqlMigrationExecutor.getSqlScript(SqlMigrationExecutor.java:96),org.flywaydb.core.internal.resolver.sql.SqlMigrationExecutor.executeInTransaction(SqlMigrationExecutor.java:109),org)。flywaydb.core.internal.command.DbMigrate.isExecuteGroupInTransaction(DbMigrate.java:312) at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:275) at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:244) at org.flywaydb.core.internal.command.DbMigrate.access$100(DbMigrate.java:53) at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:163)在org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:160) at org.flywaydb.core.internal.database.Connection$1.call(Connection.java:145) at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:74) at org.flywaydb.core.internal.database.Connection.lock(Connection.java:141) at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory( org.flywaydb.core.internal.command.DbMigrate.migrateAll(DbMigrate.java:160) at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:138) at org.flywaydb.core.Flyway$1.execute(Flyway.java:947) at org.flywaydb.core.Flyway$1.execute(Flyway.java:910) at org.flywaydb.core.Flyway.execute(Flyway.java:1238) )在org.flywaydb.core.Flyway.migrate(Flyway.java:910) at org.flywaydb.commandline.Main.executeOperation(Main.java:161) at org.flywaydb.commandline.Main.main(Main.java:108)构建步骤'Execute‘标记为failure : FAILURE
发布于 2021-01-31 07:34:55
在application.yml中使用spring引导。添加下面的placeholderReplacement: false
flyway:
baseline-on-migrate: false
sql-migration-prefix: V
table: migration
placeholderReplacement: false这种情况正在发生,因为我的.SQL迁移文件中有${name}的HTML。
所以它想要取代它!我希望它是,和一样,插入到数据库中。
汇总:在我的例子中,我希望它始终是禁用的,因为我没有使用它
引用:不同配置中的可能用法
发布于 2019-03-06 10:38:38
flyway.placeholderReplacement=false只适用于天桥占位符,而不是SQL*Plus占位符。
若要禁用特定于SQL*Plus的占位符,必须在脚本中包括SET DEFINE OFF。
发布于 2020-06-22 16:29:31
我认为,解决此错误的最佳方法是覆盖默认前缀和后缀
flyway.placeholderPrefix=$${
flyway.placeholderSuffix=}因为由于某些原因,禁用此功能可能是不可接受的:例如,使用天桥变量。
https://stackoverflow.com/questions/54998347
复制相似问题