MySQL does not thinks 0 to be a valid integer data .
Although 0 is not present in master table
it allows inserting in a referencing table
as though 0 == NULL . This is really funny (dangerous)
mysql> alter table slave add foreign key (id2) references master(id);
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0
mysql> select * from master;
Empty set (0.00 sec)
mysql>
mysql> select * from slave;
+------+
| id2  |
+------+
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
|    0 |
+------+
6 rows in set (0.00 sec)