Using Laravel 5.3 had the same problem.
The solution was to use unsignedInteger instead of integer('name')->unsigned().
So this is what worked
$table->unsignedInt('column_name');
$table->foreign('column_name')->references('id')->on('table_name');
The reason this worked is the fact that when using integer('name')->unsigned the column created in the table had length 11, but when using unsigedInteger('name') the column had length 10.
Length 10 is the length for primary keys when using Laravel so the columns length matched.