Heidisql: Heidi SQL aktualisiert Datensätze mit einem Feld mit Datentypbit nicht richtig

Erstellt am 15. Mai 2018  ·  5Kommentare  ·  Quelle: HeidiSQL/HeidiSQL

Schritte zum Reproduzieren dieses Problems

  1. Schritt 1; Erstellen Sie eine einfache Tabelle mit "ID" (int); "text(varchar50)"; "Bittyp" (Bit)
  2. Schritt 2; Füllen Sie die Tabelle mit 2 Datensätzen entsprechend ihren Datentypen.
  3. Schritt N; Aktualisieren Sie den Text mit einem anderen Text und klicken Sie auf die Schaltfläche "Posten".
  4. Dann bekomme ich ... den Fehler "SQL Error (102): Incorrect syntax near '0'

Aktuelles Verhalten

Das Problem ist, dass das generierte SQL nicht den SQL-Standards entspricht, weshalb der Fehler angezeigt wird.
Probe
UPDATE TOP(1) "Checkmarx"."dbo"."bit test table"
SET "text"='test5'
WO "ID"=4
UND "text"='test4'
UND "Bittyp"=b'0';
/* SQL-Fehler (102): Falsche Syntax nahe '0'. */
Der Grund dafür ist, dass der "Bittyp" = b'0' falsch ist. das "b" sollte nicht da sein!

Erwartetes Verhalten

UPDATE TOP(1) "Checkmarx"."dbo"."bit test table"
SET "text"='test5'
WO "ID"=4
UND "text"='test4'
UND "Bittyp"='0';
Dies ist die manuell korrigierte Syntax ohne das "b". Dies kann normal in der Option "Abfrage" ausgeführt werden und der Text wird korrekt auf "test5" aktualisiert.

Mögliche Lösung

Ändern Sie das Tool so, dass es die richtige SQL-Syntax für Microsoft SQL Server erstellt, damit dieser Fehler verschwindet. Ich könnte später in den Code schauen, um bei Bedarf weitere Details bereitzustellen.

Umfeld

  • HeidiSQL-Version:

    Version 9.5.0.5278 neuste gebaut

  • Datenbanksystem und Version:

    Ich bin mir nicht sicher, aber es sieht so aus, als ob die Syntax für eine andere Datenbank als Microsoft SQL richtig sein könnte, daher ist es relevant, die DB zu erwähnen.

neueste Version von MSSQL Server 2012, Version 11.0.7469.6

  • Betriebssystem:

nicht relevant

Hilfreichster Kommentar

Hallo,
Ich habe mir den Code angesehen, es scheint das Problem in der Datei dbconnections.pas zu geben, es gibt 3 Zeilen, in denen 'b' verwendet wird. Es scheint, dass in Zeile 7290 MYSQL-spezifisch ist, die generische Funktion scheint in Zeile 6628 zu sein. Höchstwahrscheinlich liegt das Problem dort. 'b' sollte im Fall von MSSQL nicht hinzugefügt werden. das ist meine empfehlung. Ich kann es nicht testen, da ich nicht die Umgebung habe, um eine neue Version zu erstellen. Ich hoffe das hilft!

Alle 5 Kommentare

Hallo,
Ich habe mir den Code angesehen, es scheint das Problem in der Datei dbconnections.pas zu geben, es gibt 3 Zeilen, in denen 'b' verwendet wird. Es scheint, dass in Zeile 7290 MYSQL-spezifisch ist, die generische Funktion scheint in Zeile 6628 zu sein. Höchstwahrscheinlich liegt das Problem dort. 'b' sollte im Fall von MSSQL nicht hinzugefügt werden. das ist meine empfehlung. Ich kann es nicht testen, da ich nicht die Umgebung habe, um eine neue Version zu erstellen. Ich hoffe das hilft!

Ich habe auch dieses Problem, es passiert immer, wenn ich ein Feld in einer MSSQL-Tabelle bearbeite, die keinen Primärschlüssel hat.

Ich habe das gleiche Problem auf MSSQL, aber ich habe einen Primärschlüssel.
Wenn ich den Benutzernamen ändere, ändern sich alle Bitfelder in „T,rue“ oder „F,alse“
Aber wenn ich aktualisiere, werde ich zu Einsen und Nullen.

CREATE TABLE "UsersFile" (
"UserId" INT NICHT NULL,
"UserActive" BIT NULL STANDARD NULL,
"realer Benutzername" VARCHAR(100) NULL STANDARD NULL,
"Benutzername" VARCHAR(15) NICHT NULL,
"Passwort" VARCHAR(32) NULL STANDARD NULL,
"ViewRight" BIT NULL STANDARD NULL,
"AddRight" BIT NULL STANDARD NULL,
"EditRight" BIT NULL STANDARD NULL,
"DeleteRight" BIT NULL STANDARD NULL,
"UserActivityRight" BIT NULL STANDARD NULL,
"ManagementRight" BIT NULL STANDARD NULL,
PRIMARY KEY ("Benutzername"),
EINZIGARTIGER INDEX „EINZIGARTIG“ („UserId“)
)
;

Dies ist immer noch ein Problem in HeidiSQL Version 11.0.0.6049 (64 Bit) mit MSSQL 13.0 (SQL Server 2016).

Laut Dokumentation sollten die bloßen Zahlen 0 und 1 ausreichen:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/constants-transact-sql?view=sql-server-2016#bit -constants

Alternativ werden sie manchmal in Klammern eingeschlossen, wie in (0) und (1) .

@ansgarbecker auf? 🙂

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen