#sql-server #database-migration #flyway
#sql-server #база данных-миграция #flyway
Вопрос:
Я пытаюсь clean
восстановить свою базу данных MSSQL. У меня это работает с некоторыми из моих баз данных, но в одной из них я получаю следующую ошибку.
Unable to clean schema [dbo]
----------------------------
SQL State : S0001
Error Code : 3717
Message : Cannot drop a default constraint by DROP DEFAULT statement. Use ALTER TABLE to drop a constraint default.
at org.flywaydb.core.internal.database.base.Schema.clean(Schema.java:151)
at org.flywaydb.core.internal.command.DbClean$3.call(DbClean.java:172)
at org.flywaydb.core.internal.command.DbClean$3.call(DbClean.java:169)
at org.flywaydb.core.internal.jdbc.TransactionTemplate.execute(TransactionTemplate.java:74)
at org.flywaydb.core.internal.command.DbClean.cleanSchema(DbClean.java:169)
at org.flywaydb.core.internal.command.DbClean.clean(DbClean.java:113)
at org.flywaydb.core.Flyway.doClean(Flyway.java:1488)
at org.flywaydb.core.Flyway.access$300(Flyway.java:85)
at org.flywaydb.core.Flyway$3.execute(Flyway.java:1506)
at org.flywaydb.core.Flyway$3.execute(Flyway.java:1499)
at org.flywaydb.core.Flyway.execute(Flyway.java:1711)
at org.flywaydb.core.Flyway.clean(Flyway.java:1499)
at org.flywaydb.commandline.Main.executeOperation(Main.java:157)
at org.flywaydb.commandline.Main.main(Main.java:108)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Cannot drop a default constraint by DROP DEFAULT statement. Use ALTER TABLE to drop a con
straint default.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:254)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1608)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:578)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:508)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:243)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:218)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(SQLServerPreparedStatement.java:493)
at org.flywaydb.core.internal.jdbc.JdbcTemplate.execute(JdbcTemplate.java:215)
at org.flywaydb.core.internal.database.sqlserver.SQLServerSchema.doClean(SQLServerSchema.java:294)
at org.flywaydb.core.internal.database.base.Schema.clean(Schema.java:149)
... 13 more
Многие из моих таблиц имеют ограничения по умолчанию для определенных столбцов. Но я не вижу, как я могу изменить, как flyway удаляет эти ограничения. Я не могу найти никакой информации о том, как обойти эту проблему. Если у вас есть какое-либо представление, пожалуйста, помогите. Спасибо!
Комментарии:
1. Эта ошибка подразумевает, что на сервере запущен SQL Server 2019 в какой-либо форме. В SQL Server 2017 в онлайн-книгах сообщалось, что УДАЛЕНИЕ ПО УМОЛЧАНИЮ будет удалено из «следующей версии» SQL Server. Если это так, то, по-видимому,
flyway
это несовместимо с SQL 2019.2. Привет @LaughingVergil. На самом деле я запускаю SQL Server 14.0.2002.14 (он же 2017).
Ответ №1:
Пожалуйста, отправьте сообщение о проблеме в средство отслеживания проблем с указанием точных шагов по воспроизведению, включая минимально возможный файл SQL, который вызывает это.