Heidisql: Heidi SQL ne met pas correctement à jour les enregistrements à l'aide d'un champ avec un bit de type de données

Créé le 15 mai 2018  ·  5Commentaires  ·  Source: HeidiSQL/HeidiSQL

Étapes pour reproduire ce problème

  1. Étape 1; Créez un tableau simple avec "ID" (int); "texte(varchar50)" ; "type de bit" (bit)
  2. Étape 2; Remplissez le tableau avec 2 enregistrements en fonction de leurs types de données.
  3. étape N ; Mettez à jour le texte avec un autre texte et appuyez sur le bouton "poster"
  4. Ensuite, j'obtiens ... l'erreur "Erreur SQL (102): syntaxe incorrecte près de '0'

Comportement actuel

le problème est que le SQL généré n'est pas conforme aux normes SQL, donc l'erreur apparaît.
Goûter
MISE À JOUR TOP(1) "Checkmarx"."dbo"."bit table de test"
SET "texte"='test5'
OÙ "ID"=4
ET "texte"='test4'
AND "bitity type"=b'0' ;
/* Erreur SQL (102) : syntaxe incorrecte proche de '0'. */
la raison en est que le "type bity"=b'0' est incorrect. le "b" ne devrait pas être là !

Comportement prévisible

MISE À JOUR TOP(1) "Checkmarx"."dbo"."bit table de test"
SET "texte"='test5'
OÙ "ID"=4
ET "texte"='test4'
AND "bitity type"='0' ;
Il s'agit de la syntaxe corrigée manuellement sans le "b". cela peut être exécuté normalement dans l'option "query" et le texte est correctement mis à jour vers 'test5'

Solution possible

modifiez l'outil afin qu'il crée la syntaxe SQL correcte pour le serveur Microsoft SQL afin que cette erreur disparaisse. Je pourrais regarder dans le code plus tard pour fournir plus de détails si nécessaire.

Environnement

  • Version HeidiSQL :

    version 9.5.0.5278 dernière version construite

  • Système et version de la base de données :

    Je ne suis pas sûr, mais il semble que la syntaxe soit correcte pour une autre base de données que Microsoft SQL, il est donc pertinent de mentionner la base de données.

dernière version du serveur MSSQL 2012 version 11.0.7469.6

  • Système opérateur:

non pertinent

Commentaire le plus utile

Salut,
J'ai regardé dans le code, il semble que le problème se trouve dans le fichier dbconnections.pas , il y a 3 lignes où 'b' est utilisé. il semble que la ligne 7290 soit spécifique à MYSQL, la fonction générique semble être à la ligne 6628. le problème est probablement là. 'b' ne doit pas être ajouté dans le cas de MSSQL. c'est ma recommandation. Je ne peux pas tester car je n'ai pas l'environnement pour construire une nouvelle version. J'espère que ça aide!

Tous les 5 commentaires

Salut,
J'ai regardé dans le code, il semble que le problème se trouve dans le fichier dbconnections.pas , il y a 3 lignes où 'b' est utilisé. il semble que la ligne 7290 soit spécifique à MYSQL, la fonction générique semble être à la ligne 6628. le problème est probablement là. 'b' ne doit pas être ajouté dans le cas de MSSQL. c'est ma recommandation. Je ne peux pas tester car je n'ai pas l'environnement pour construire une nouvelle version. J'espère que ça aide!

J'ai aussi ce problème, cela arrive toujours lors de l'édition d'un champ dans une table MSSQL qui n'a pas de clé primaire.

J'ai le même problème sur MSSQL, mais j'ai une clé primaire.
Lorsque je change le nom d'utilisateur, tous les champs de bits changent en "T,rue" ou "F,alse"
Mais quand je rafraîchis, je deviens des 1 et des 0.

CREATE TABLE "UsersFile" (
"UserId" INT NON NULL,
"UserActive" BIT NULL PAR DÉFAUT NULL,
"userrealname" VARCHAR(100) NULL PAR DÉFAUT NULL,
"NomUtilisateur" VARCHAR(15) NON NULL,
"Mot de passe" VARCHAR(32) NULL PAR DÉFAUT NULL,
"ViewRight" BIT NULL PAR DÉFAUT NULL,
"AddRight" BIT NULL PAR DÉFAUT NULL,
"EditRight" BIT NULL PAR DÉFAUT NULL,
"DeleteRight" BIT NULL PAR DÉFAUT NULL,
"UserActivityRight" BIT NULL PAR DÉFAUT NULL,
"ManagmentRight" BIT NULL PAR DÉFAUT NULL,
CLÉ PRIMAIRE ("NomUtilisateur"),
INDEX UNIQUE "UNIQUE" ("UserId")
)
;

Il s'agit toujours d'un problème dans HeidiSQL version 11.0.0.6049 (64 bits) avec MSSQL 13.0 (SQL Server 2016).

Selon la documentation, seuls les chiffres 0 et 1 devraient suffire :
https://docs.microsoft.com/en-us/sql/t-sql/data-types/constants-transact-sql?view=sql-server-2016#bit -constants

Alternativement, ils sont parfois entourés de parenthèses, comme dans (0) et (1) .

@ansgarbecker debout ? 🙂

Cette page vous a été utile?
0 / 5 - 0 notes