Pregunta

Intenté crear un campo como un TINYINT(1), NOT NULL y un DEFAULT valor de -1 Para indicar 'desconocido', pero recibí este error de mi cliente:

Alteración de errores Mi mesa: Tiene un error en su sintaxis SQL; Verifique el manual que corresponde a su versión del servidor MySQL para que la sintaxis correcta se use cerca de '' en la línea 1

También intenté hacer la duración 2 y recibí el mismo mensaje

Adivinación TINYINT ¿No es el tipo de datos adecuado para este tipo de designación, pero qué es?

Editar: lo hice funcionar después de leer el comentario de Ed Cottrell. Creo que había un personaje adicional en alguna parte, aquí estaba la declaración que generó mi cliente (usando Querious For Mac):

ALTER TABLE `DBName`.`MyTable`
CHANGE COLUMN `MyColumn` `MyColumn` TINYINT(1) NOT NULL DEFAULT -1  COMMENT ''
AFTER `MyOtherColumn`;

Note que COMMENT Allí y se aseguró de que todo estuviera limpio.

Otros comentarios y respuestas fueron agradecidos; He decidido dejar NULL medio desconocido en este caso

¿Fue útil?

Solución

Creo que debería almacenar esto como un poco (si le importa el tamaño del almacenamiento) y dejar NULL significa "desconocido".

field bit(1) default NULL,

Parece extraño declarar que un campo not null y luego tener un valor especial que, esencialmente, significa NULL.

EDITAR:

La siguiente sintaxis "funciona" en Violín SQL:

create table t (
  val int,
  flag tinyint(1) default -1
 );

"Works" está en citas porque el valor predeterminado se imprime como "1" en lugar de "-1", después de todo, el (1) dice solo imprimir un dígito.

Quizás en algunas versiones anteriores de MySQL genera un error cuando ve que -1 No se mostrará correctamente. (Para ser honesto, eso me sorprendería).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top