Heidisql: Heidi SQL 没有正确更新使用数据类型位字段的记录

创建于 2018-05-15  ·  5评论  ·  资料来源: HeidiSQL/HeidiSQL

重现此问题的步骤

  1. 第1步; 用“ID”(int)创建一个简单的表; “文本(varchar50)”; “位类型”(位)
  2. 第2步; 根据它们的数据类型用 2 条记录填充表。
  3. 步骤N; 用另一个文本更新文本,然后按“发布”按钮
  4. 然后我得到......错误“SQL错误(102):'0'附近的语法不正确

当前行为

问题是生成的 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”。 这是我的建议。 我无法测试是因为我没有构建新版本的环境。 我希望这有帮助!

所有5条评论

你好,
我查看了文件 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 位)中,这仍然是一个问题。

根据文档,裸数字01应该足够了:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/constants-transact-sql?view=sql-server-2016#bit -constants

或者,它们有时用括号括起来,如(0)(1)

@ansgarbecker起来了吗? 🙂

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

chrysler5798 picture chrysler5798  ·  5评论

dzintb picture dzintb  ·  3评论

jorisrobijn picture jorisrobijn  ·  5评论

chrysler5798 picture chrysler5798  ·  5评论

Ivan-Perez picture Ivan-Perez  ·  3评论