Heidisql: Heidi SQLは、データ型ビットのフィールドを使用してレコードを適切に更新しません

作成日 2018年05月15日  ·  5コメント  ·  ソース: HeidiSQL/HeidiSQL

この問題を再現する手順

  1. ステップ1; 「ID」(int)を使用して単純なテーブルを作成します。 "text(varchar50)"; 「ビットタイプ」(ビット)
  2. ステップ2; データ型に応じて2つのレコードをテーブルに入力します。
  3. ステップN; テキストを別のテキストで更新し、「投稿」ボタンを押します
  4. 次に、エラー「SQLエラー(102):「0」付近の構文が正しくありません」が表示されます。

現在の動作

問題は、生成されたSQLがSQL標準に準拠していないため、エラーが表示されることです。
サンプル
UPDATE TOP(1)"Checkmarx"。"dbo"。"ビットテストテーブル"
SET "text" ='test5'
WHERE "ID" = 4
AND "text" ='test4'
AND "bity type" = b'0';
/ * SQLエラー(102):「0」付近の構文が正しくありません。 * /
その理由は、「bitytype」=b'0'が正しくないためです。 「b」はそこにあるべきではありません!

予想される行動

UPDATE TOP(1)"Checkmarx"。"dbo"。"ビットテストテーブル"
SET "text" ='test5'
WHERE "ID" = 4
AND "text" ='test4'
AND "bity type" = '0';
これは、「b」を含まない手動で修正された構文です。 これは「query」オプションで通常どおり実行でき、テキストは「test5」に正しく更新されます。

考えられる解決策

ツールを変更して、Microsoft SQL Serverの正しいSQL構文を作成し、このエラーが消えるようにします。 必要に応じて、後でコードを調べて詳細を提供する場合があります。

環境

  • HeidiSQLバージョン:

    バージョン9.5.0.5278最新ビルド

  • データベースシステムとバージョン:

    よくわかりませんが、構文はMicrosoft SQL以外のデータベースに適しているようです。したがって、DBについて言及するのが適切です。

最新のMSSQLServer2012ビルド11.0.7469.6

  • オペレーティング・システム:

関係ありません

最も参考になるコメント

やあ、
ファイルdbconnections.pasに問題があると思われるコードを調べたところ、「b」が使用されている行が3行あります。 7290行目はMYSQL固有であり、ジェネリック関数は6628行目にあるようです。おそらく問題はそこにあります。 MSSQLの場合は、「b」を追加しないでください。 これが私のおすすめです。 新しいバージョンをビルドするための環境がないため、テストできません。 これがお役に立てば幸いです。

全てのコメント5件

やあ、
ファイルdbconnections.pasに問題があると思われるコードを調べたところ、「b」が使用されている行が3行あります。 7290行目はMYSQL固有であり、ジェネリック関数は6628行目にあるようです。おそらく問題はそこにあります。 MSSQLの場合は、「b」を追加しないでください。 これが私のおすすめです。 新しいバージョンをビルドするための環境がないため、テストできません。 これがお役に立てば幸いです。

私もこの問題を抱えています。主キーを持たないMSSQLテーブルのフィールドを編集するときに常に発生します。

MSSQLでも同じ問題がありますが、主キーがあります。
UserNameを変更すると、すべてのビットフィールドが「T、rue」または「F、alse」に変更されます
しかし、リフレッシュすると1と0になります。

CREATE TABLE "UsersFile"(
"UserId" INT NOT NULL、
「UserActive」ビットNULLデフォルトNULL、
"userrealname" VARCHAR(100)NULL DEFAULT NULL、
"UserName" VARCHAR(15)NOT NULL、
"パスワード"VARCHAR(32)NULL DEFAULT NULL、
"ViewRight" BIT NULL DEFAULT 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、
主キー( "ユーザー名")、
UNIQUE INDEX "UNIQUE"( "UserId")
)。
;

これは、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 up? 🙂

このページは役に立ちましたか?
0 / 5 - 0 評価