Im ersten Post sind bereits zwei Hochkommata an der betroffenen Stelle und keine Gänsefüßchen.
Kleine Problem-Erläuterung für Interessierte:
Ein leerer String kann nicht in einen Integer umgewandelt werden.
default '0' geht weil MySQL den String '0' in den Integer 0 (erstens) umwandeln kann und das (zweitens) auch tut.
Korrekter wäre wohl default 0. Aber da MySQL ja fast alles schluckt und es sich um ein CREATE TABLE Statement handelt, das ja nicht ständig ausgeführt wird, ist es wohl performance-technisch unbedeutend wenn MySQL da noch eine Typ-Umwandlung durchführen muss.
Bei Statements die öfter ausgeführt werden, achte ich in der Regel darauf dass MySQL keine Typ-Umwandlungen vornehmen muss, d.h. Werte sollten zum Spaltentyp passen.
Wenn mal das Datenbank-System geändert wird und eine restriktivere Auslegung der SQL-Syntax durchführt, dann könnte das durchaus nützlich sein, von vorne herein nahe an der Standard-Syntax zu bleiben.
Aber wer will schon bei einem VMS auf PostgreSQL oder so umsteigen...