create_user INT UNSIGNED ZEROFILL
cannot reference id INT
, because these count as different data types for purposes of foreign key reference. Make them the same data type.
The only data type difference that is permitted between columns in a foreign key relationship is length of a varchar. For example, VARCHAR(10) can reference VARCHAR(20) or vice-versa.
Any other difference in data type, size, or character set is incompatible for referential integrity.
Even having ZEROFILL
on one column but not the other makes the data types incompatible.