Il discorso del campo INT e' infatti una cosa che volevo dire pure io, ma non volemo mettere troppo acqua a bollire, anche perche' se cambiando il tipo di campo metti caso che anche altro cambi e funzioni si vada ad addebitare il problema al tipo di campo .

Per precisare quanto detto giustamente da daniele bisogna dire che i campi TINYINT, SMALLINT, MEDIUMINT, INT e BIGINT sono formati con lunghezza di campo prefissata. Rispettivamente occupano:
codice:
TINYINT   1 byte
SMALLINT  2 byte
MEDIUMINT 3 byte
INT       4 byte
BIGINT    8 byte
Il numerello che si mette tra parentesi e' il numero dei digit da visualizzare, che alla fin della fiera serve solo se si usa UNSIGNED ZEROFILL perche' se si supera la lunghezza impostata MySQL visualizza tutti i numeri inseriti fino alla max capacita' del campo.

Nel caso attuale essendo il campo di tipo BOOL che mysql non ha, il manuale suggerisce espressamente di usare il campo TINYINT(1) con 0/1 in funzione di falso/vero .

Con questo uso (campo BOOL) un errore di configurazione c'e' (al di la del tipo di campo) ed e' il campo "yellow_card" definito come NULL invece che NOT NULL. Se si vuole un funzione tipo BOOLEANA un campo non puo' mai essere NULL. NULL non e' = FALSE.