问题是生成的 SQL 不符合 SQL 标准,因此出现错误。
样本
UPDATE TOP(1) "Checkmarx"."dbo"."bit test table"
设置“文本”='test5'
其中“ID”=4
和“文本”='test4'
AND“位类型”=b'0';
/* SQL 错误 (102): '0' 附近的语法不正确。 */
原因是“位类型”=b'0' 不正确。 “b”不应该在那里!
UPDATE TOP(1) "Checkmarx"."dbo"."bit test table"
设置“文本”='test5'
其中“ID”=4
和“文本”='test4'
AND“位类型”='0';
这是没有“b”的手动更正的语法。 这可以在“查询”选项中正常运行,并且文本正确更新为“test5”
更改工具,使其为 Microsoft SQL 服务器创建正确的 SQL 语法,从而消除此错误。 如果需要,我稍后可能会查看代码以提供更多详细信息。
HeidiSQL 版本:
版本 9.5.0.5278 最新构建
数据库系统和版本:
我不确定,但看起来该语法可能适用于 Microsoft SQL 之外的另一个数据库,因此提及数据库是相关的。
最新构建的 MSSQL 服务器 2012 内置 11.0.7469.6
不相干
你好,
我查看了文件 dbconnections.pas 中出现问题的代码,有 3 行使用了 'b'。 似乎第 7290 行是 MYSQL 特定的,通用函数似乎在第 6628 行。问题很可能就在那里。 如果是 MSSQL,则不应添加“b”。 这是我的建议。 我无法测试是因为我没有构建新版本的环境。 我希望这有帮助!
我也有这个问题,它总是在编辑没有主键的 MSSQL 表中的字段时发生。
我在 MSSQL 上遇到了同样的问题,但我确实有一个主键。
当我更改用户名时,所有位字段都更改为“T,rue”或“F,alse”
但是当我刷新时,我变成了 1 和 0。
创建表“用户文件”(
“用户 ID” INT NOT NULL,
"UserActive" 位 NULL 默认 NULL,
"userrealname" VARCHAR(100) NULL DEFAULT NULL,
“用户名” VARCHAR(15) 非空,
“密码” VARCHAR(32) NULL DEFAULT NULL,
"ViewRight" 位 NULL 默认 NULL,
"AddRight" BIT NULL DEFAULT NULL,
"EditRight" BIT NULL DEFAULT NULL,
"DeleteRight" BIT NULL DEFAULT NULL,
"UserActivityRight" BIT NULL DEFAULT NULL,
"ManagmentRight" BIT NULL DEFAULT NULL,
主键(“用户名”),
唯一索引“唯一”(“用户 ID”)
)
;
在带有 MSSQL 13.0 (SQL Server 2016) 的 HeidiSQL 版本 11.0.0.6049(64 位)中,这仍然是一个问题。
根据文档,裸数字0
和1
应该足够了:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/constants-transact-sql?view=sql-server-2016#bit -constants
或者,它们有时用括号括起来,如(0)
和(1)
。
@ansgarbecker起来了吗? 🙂
最有用的评论
你好,
我查看了文件 dbconnections.pas 中出现问题的代码,有 3 行使用了 'b'。 似乎第 7290 行是 MYSQL 特定的,通用函数似乎在第 6628 行。问题很可能就在那里。 如果是 MSSQL,则不应添加“b”。 这是我的建议。 我无法测试是因为我没有构建新版本的环境。 我希望这有帮助!