Domanda

Ho provato a creare un campo come un TINYINT(1), NOT NULL e a DEFAULT valore di -1 Per indicare "sconosciuto", ma ho ricevuto questo errore dal mio cliente:

Errore alterazione Mytable: Hai un errore nella sintassi SQL; Controlla il manuale che corrisponde alla versione del server MySQL per la sintassi giusta da utilizzare vicino a '' alla riga 1

Ho anche provato a fare la lunghezza 2 e ho ricevuto lo stesso messaggio

Indovinare TINYINT Il tipo di dati giusto non è per questo tipo di designazione, ma cos'è?

EDIT: ho fatto funzionare dopo aver letto il commento di Ed Cottrell. Penso che ci fosse un personaggio in più da qualche parte, ecco l'affermazione che il mio cliente (usando query per Mac) ha generato:

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

Notato che COMMENT Lì e si è assicurato che tutto fosse pulito.

Altri commenti e risposte sono stati apprezzati; Ho deciso di lasciarmi NULL significa sconosciuto in questo caso

È stato utile?

Soluzione

Penso che dovresti archiviarlo come un po '(se ti preoccupi delle dimensioni di archiviazione) e lascia NULL significa "sconosciuto".

field bit(1) default NULL,

Sembra strano dichiarare un campo not null E poi avere un valore speciale che, essenzialmente, significa NULL.

MODIFICARE:

La sintassi seguente "funziona" su Violino SQL:

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

"Works" è tra virgolette perché il valore predefinito stampano come "1" anziché "-1"-dopo tutto, il (1) sta dicendo solo stampare una cifra.

Forse in alcune versioni precedenti di MySQL genera un errore quando lo vede -1 non verrà visualizzato correttamente. (Ad essere sincero, questo mi sorprenderebbe.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top