"The field type is varchar(1)"
When it's a VarChar you should write a string and not a number, '0' and '1' instead of 0 and 1.
There's an automatic typecast from byteint to varchar which results in ' 0' which is then silently truncated to ' '.
But why do you use VarChar(1)? There's a two byte overhead for VarChars, so you better go with a CHAR(1). Or use a BYTEINT or DECIMAL(1), both need a single byte for storage and you won't have problems with automatic typecasts...