Heidisql: Heidi SQL no actualiza correctamente los registros usando un campo con bit de tipo de datos

Creado en 15 may. 2018  ·  5Comentarios  ·  Fuente: HeidiSQL/HeidiSQL

Pasos para reproducir este problema

  1. Paso 1; Cree una tabla simple con "ID" (int); "texto (varchar50)"; "tipo de bit" (bit)
  2. Paso 2; Llene la tabla con 2 registros según sus tipos de datos.
  3. Paso N; Actualice el texto con otro texto y presione el botón "publicar"
  4. Luego aparece... el error "Error de SQL (102): sintaxis incorrecta cerca de '0'

Comportamiento actual

el problema es que el SQL generado no cumple con los estándares de SQL, por lo que aparece el error.
Muestra
ACTUALIZAR TOP(1) "Checkmarx"."dbo"."tabla de prueba de bits"
SET "texto" = 'prueba5'
DONDE "ID"=4
Y "texto"='prueba4'
Y "tipo de bits"=b'0';
/* Error SQL (102): Sintaxis incorrecta cerca de '0'. */
la razón es porque el "tipo de bit"=b'0' es incorrecto. ¡la "b" no debería estar allí!

Comportamiento esperado

ACTUALIZAR TOP(1) "Checkmarx"."dbo"."tabla de prueba de bits"
SET "texto" = 'prueba5'
DONDE "ID"=4
Y "texto"='prueba4'
Y "tipo de bits"='0';
Esta es la sintaxis corregida manualmente sin la "b". esto se puede ejecutar normalmente en la opción "query" y el texto se actualiza correctamente a 'test5'

Solución posible

cambie la herramienta para que cree la sintaxis SQL correcta para el servidor Microsoft SQL para que este error desaparezca. Podría revisar el código más adelante para proporcionar más detalles si es necesario.

Ambiente

  • Versión HeidiSQL:

    versión 9.5.0.5278 última versión

  • Sistema de base de datos y versión:

    No estoy seguro, pero parece que la sintaxis podría ser adecuada para otra base de datos que no sea Microsoft SQL, por lo que es relevante mencionar la base de datos.

última compilación del servidor MSSQL 2012 construido 11.0.7469.6

  • Sistema operativo:

Irrelevante

Comentario más útil

Hola,
Investigué el código, aparece el problema en el archivo dbconnections.pas, hay 3 líneas donde se usa 'b'. parece que en la línea 7290 es específica de MYSQL, la función genérica parece estar en la línea 6628. Lo más probable es que el problema esté ahí. No se debe agregar 'b' en el caso de MSSQL. esta es mi recomendacion No puedo probar porque no tengo el entorno para construir una nueva versión. ¡Espero que esto ayude!

Todos 5 comentarios

Hola,
Investigué el código, aparece el problema en el archivo dbconnections.pas, hay 3 líneas donde se usa 'b'. parece que en la línea 7290 es específica de MYSQL, la función genérica parece estar en la línea 6628. Lo más probable es que el problema esté ahí. No se debe agregar 'b' en el caso de MSSQL. esta es mi recomendacion No puedo probar porque no tengo el entorno para construir una nueva versión. ¡Espero que esto ayude!

También tengo este problema, siempre sucede al editar un campo en una tabla MSSQL que no tiene una clave principal.

Tengo el mismo problema en MSSQL, pero tengo una clave principal.
Cuando cambio el nombre de usuario, todos los campos de bits cambian a "Verdadero" o "F,also"
Pero cuando actualizo me convierto en 1 y 0.

CREAR TABLA "ArchivoUsuarios" (
"ID de usuario" INT NO NULO,
"UserActive" BIT NULO PREDETERMINADO NULO,
"nombrerealusuario" VARCHAR(100) NULO PREDETERMINADO NULO,
"Nombre de usuario" VARCHAR(15) NO NULO,
"Contraseña" VARCHAR(32) NULO PREDETERMINADO NULO,
"ViewRight" BIT NULO PREDETERMINADO NULO,
"AddRight" BIT NULO PREDETERMINADO NULO,
"EditRight" BIT NULO PREDETERMINADO NULO,
"DeleteRight" BIT NULO PREDETERMINADO NULO,
"UserActivityRight" BIT NULO PREDETERMINADO NULO,
"ManagmentRight" BIT NULO PREDETERMINADO NULO,
CLAVE PRINCIPAL ("Nombre de usuario"),
ÍNDICE ÚNICO "ÚNICO" ("UserId")
)
;

Esto sigue siendo un problema en HeidiSQL versión 11.0.0.6049 (64 bits) con MSSQL 13.0 (SQL Server 2016).

Según la documentación, los números desnudos 0 y 1 deberían ser suficientes:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/constants-transact-sql?view=sql-server-2016#bit -constants

Alternativamente, a veces se envuelven entre paréntesis, como en (0) y (1) .

@ansgarbecker arriba? 🙂

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

dzintb picture dzintb  ·  3Comentarios

chrysler5798 picture chrysler5798  ·  5Comentarios

andreybatalof picture andreybatalof  ·  4Comentarios

cautionbug picture cautionbug  ·  4Comentarios

yz778 picture yz778  ·  4Comentarios