Você está inserindo strings vazias e strings vazias não são
NULL
, para verificar se há NULL
erro faça:INSERT INTO `addresses` (`street`, `city`, `state`, `zip`) VALUES (NULL, NULL, NULL, NULL);
e você verá o erro. O
NOT NULL
verifica apenas valores que não sejam NULL
. Para evitar uma string vazia, você deve usar triggers , ou faça as verificações na linguagem de programação do lado do servidor para converter strings vazias em
NULL
antes de executar INSERT
query.Um exemplo de gatilho para INSERT
pode ser como:(este é apenas um exemplo) CREATE TRIGGER avoid_empty
BEFORE INSERT ON addresses
FOR EACH ROW
BEGIN
IF street = '' THEN SET street = NULL END IF;
END;