По-умолчанию колонка id в Laravel имеет тип unsigned bigint
. Такой тип у колонки users.id
. Вы пытаетесь на неё сосласться из колонки posts.user_id
, которая имеет тип unsigned int
, отсюда и ошибка.
Внешний ключ создаётся отдельным запросом, поэтому таблицы у вас создались, а он нет. Более того, при следующей попытке запуска миграций вы получите ошибку "таблица posts уже существует", потому что миграция выполнилась наполовину и будет пытаться выполниться снова.
Нужно вручную удалить таблицу, исправить тип колонки и перезапустить миграцию.