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!
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.
Ä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.
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
nicht relevant
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? 🙂
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!