sql-server - 通过 Flyway 运行批处理脚本时出现 SQL 错误 586
问题描述
我正在通过 flyway migrate 运行一些脚本,并且在每个脚本中都出现此错误。脚本本身会运行,但下一个不会。
The prepared statement handle 3 is not valid in this context.
Please verify that current database, user default schema, and ANSI_NULLS and
QUOTED_IDENTIFIER set options are not changed since the handle is prepared.
脚本上次运行良好,但我有一段时间没有执行它们。其他开发人员在笔记本电脑上运行良好。我已经检查了两台笔记本电脑上 ANSI_Nulls 和 Quoted_Identifier 的默认设置,它们是相同的。
需要注意的一件事是,所有脚本在执行之前都将 ANSI_NULLS 和 QUOTED_IDENTIFIER 显式设置为 ON,然后将它们关闭,例如
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
IF OBJECT_ID(N'[dbo].[CalculateActionStatus]', N'FN') IS NULL
EXEC('CREATE FUNCTION [dbo].[CalculateActionStatus] (@Dummy int) RETURNS int AS BEGIN RETURN 1 END;')
GO
ALTER FUNCTION [dbo].[CalculateActionStatus]
(@ActionID int)
RETURNS int
AS
BEGIN
-- Action Status is basically the BIGGEST Status value of its child steps
DECLARE @Status int
set @Status = 0
select @Status = max(dbo.CalculateStepStatus(Start, Due, Completed, PercentComplete))
from dbo.view_Step_ResolutionStep
where ActionID = @ActionID
RETURN isnull(@Status, 0)
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
有任何想法吗?
解决方案
我遇到了这个问题,但这是因为我使用的是 JTDS 驱动程序。我改为使用 SQL 服务器驱动程序,它工作正常。这实际上在 Flyway SQL Server 限制文档中也有说明。
JTDS 连接字符串;
flyway.url=jdbc:jtds:sqlserver://myserver:1433/mydb
SQL Server 连接字符串;
flyway.url=jdbc:sqlserver://myserver:1433;databaseName=mydb
推荐阅读
- android - 为什么我的 NestedScrollView 不将自身定位在我的 ConstraintView 下方,尽管我使用了约束?
- react-native - 在更改父组件的状态后,子组件的重新渲染正在使用类,但它不能与钩子一起使用
- windows - 为 GCP Windows VM 使用 Terraform 配置文件时出错
- python - 火炬到张量流
- android-studio - IntelliJ IDEA/Android Studio/VS Code 无法下载 Gradle 的 bundletools
- python - 如何将枚举值添加到 Flask 路径参数?
- python - 我在数据库“标签”中有一个字段,我可以输入如下内容:php、laravel、html、css。我需要将标签变量拆分为一个数组
- mysql - SQL 状态:08S01 通信链路故障
- firebase - 如何使用 bloc 从 Fire Store 检索数据收集列表
- encryption - MQTT Mosquitto 中的 TLS/SSL 加密不起作用