Pergunta

Eu tentei criar um campo como um TINYINT(1), NOT NULL e a DEFAULT valor de -1 Para indicar 'desconhecido', mas recebi esse erro do meu cliente:

Alteração de erros Minha mesa: Você tem um erro na sua sintaxe SQL; Verifique o manual que corresponde à sua versão do MySQL Server para obter a sintaxe correta para usar próximo '' na linha 1

Eu também tentei fazer o comprimento 2 e recebi a mesma mensagem

Adivinhação TINYINT Não é o tipo de dados certo para esse tipo de designação, mas o que é?

EDIT: Eu consegui funcionar depois de ler o comentário de Ed Cottrell. Eu acho que havia um personagem extra em algum lugar, aqui estava a afirmação de que meu cliente (usando o querido para Mac) gerou:

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

Notou que COMMENT Lá e garantiu que tudo estivesse limpo.

Outros comentários e respostas foram apreciados; Eu decidi deixar NULL significa desconhecido neste caso

Foi útil?

Solução

Eu acho que você deveria armazenar isso como um pouco (se você se preocupa com o tamanho do armazenamento) e deixe NULL significa "desconhecido".

field bit(1) default NULL,

Parece estranho declarar um campo para ser not null e então ter um valor especial que, essencialmente, significa NULL.

EDITAR:

A seguinte sintaxe "trabalha" em SQL Fiddle:

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

"Works" está em citações porque o valor padrão imprime como "1" em vez de "-1"-afinal, o (1) está dizendo apenas imprimir um dígito.

Talvez em algumas versões anteriores do MySQL gerem um erro quando vê que -1 não será exibido corretamente. (Para ser sincero, isso me surpreenderia.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top