Frage

Ich habe versucht, ein Feld zu erstellen TINYINT(1), NOT NULL und ein DEFAULT Wert von -1 Um "unbekannt" anzuzeigen, habe ich diesen Fehler von meinem Client bekommen:

Fehleränderung Mein Tisch: Sie haben einen Fehler in Ihrer SQL -Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL -Serverversion entspricht, damit die richtige Syntax in der Nähe von '' in Zeile 1 verwendet wird

Ich habe auch versucht, die Länge 2 zu machen und habe die gleiche Nachricht erhalten

Raten TINYINT Ist nicht der richtige Datentyp für diese Art von Bezeichnung, aber was ist?

Bearbeiten: Ich habe es zum Lesen des Kommentars von Ed Cottrell zum Lesen gebracht. Ich denke, es gab irgendwo einen zusätzlichen Charakter, hier war die Aussage, die mein Client (mit Querious für Mac) generierte:

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

Bemerkte das COMMENT dort und sorgte dafür, dass alles sauber war.

Andere Kommentare und Antworten wurden geschätzt; Ich habe beschlossen zu lassen NULL gemein in diesem Fall unbekannt

War es hilfreich?

Lösung

Ich denke, Sie sollten dies als ein bisschen speichern (wenn Sie sich für die Speichergröße interessieren) und lassen NULL Mean "unbekannt".

field bit(1) default NULL,

Es scheint seltsam, ein Feld zu erklären not null und dann einen besonderen Wert zu haben, der im Wesentlichen bedeutet NULL.

BEARBEITEN:

Die folgende Syntax "funktioniert" auf SQL Fiddle:

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

"Works" ist in Anführungszeichen, weil der Standardwert eher als "1" als "-1" druckt-schließlich die, die, die, die, die (1) Sagt nur eine Ziffer.

Vielleicht erzeugt es in einigen früheren Versionen von MySQL einen Fehler, wenn es das sieht -1 wird nicht richtig angezeigt. (Um ehrlich zu sein, würde mich das überraschen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top