Mi accodo a questa discussione perchè sono da poco passato a MySQL (da .mdb) e pensavo di fare una figata utilizzando il campo ENUM:

attivo = ENUM ('true','false')

nelle prove però si è evidenziato che il campo non risponde allo stesso modo al true/false, infatti se faccio

Codice PHP:
if ($row['attivo']) {...} 
mi aspetterei in caso di 'false' nel campo che la condizione restituisse appunto false, invece considera il campo sempre a true in quanto è presente del testo.

Comportamento diverso (e corretto) se il campo viene così settato:

attivo = ENUM ('0','1')

Comportamente corretto anche con TINYINT(1) (come segnalato da Razorblade).

Quale consigliate voi per evitare problemi?