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í!
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'
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.
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
Irrelevante
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? 🙂
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!