Question

J'ai essayé de créer un champ en tant que TINYINT(1), NOT NULL et un DEFAULT valeur de -1 Pour indiquer «inconnu», mais j'ai obtenu cette erreur de mon client:

Modification des erreurs Ma table: Vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel qui correspond à votre version MySQL Server pour que la syntaxe de droite puisse utiliser près de '' à la ligne 1

J'ai aussi essayé de faire la longueur 2 et j'ai reçu le même message

Devinant TINYINT Le bon type de données n'est-il pas pour ce type de désignation, mais qu'est-ce que c'est?

Edit: Je l'ai fait fonctionner après avoir lu le commentaire d'Ed Cottrell. Je pense qu'il y avait un personnage supplémentaire quelque part, voici la déclaration que mon client (utilisant Querious for Mac) a généré:

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

Remarqué que COMMENT là et s'est assuré que tout était propre.

D'autres commentaires et réponses ont été appréciés; J'ai décidé de laisser NULL signifie inconnu dans ce cas

Était-ce utile?

La solution

Je pense que vous devriez stocker cela comme un peu (si vous vous souciez de la taille du stockage) et laissez NULL signifie "inconnu".

field bit(1) default NULL,

Il semble étrange de déclarer un champ not null Et puis avoir une valeur particulière qui, essentiellement, signifie NULL.

ÉDITER:

La syntaxe suivante "fonctionne" sur Violon SQL:

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

"Works" est en devis car la valeur par défaut imprime comme "1" plutôt que "-1" - après tout, le (1) dit simplement imprimer un chiffre.

Peut-être que dans certaines versions antérieures de MySQL, cela génère une erreur quand il voit que -1 ne s'affichera pas correctement. (Pour être honnête, cela me surprendrait.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top