Обычно это означает, что была попытка миграции ранее и произошла ошибка во время миграции.
Например у вас всего одна миграция (версия 1) с созданием таблицы `users` как в вашем случае.
Вы запускаете команду up, а в файле с миграциями ошибка.
В это случае таблица `users` в базе не создалась, а таблицу schema_migrations команда `migrate` уже создала.
И не просто создала, а и записала туда, что у вас база соответствует версии 1 и установила флажок `dirty`.
SELECT * FROM schema_migrations;
+---------+-------+
| version | dirty |
+---------+-------+
| 1 | 1 |
+---------+-------+
1 row in set (0.00 sec)
По хорошему надо проверить какие миграции у вас выполнены, а какие нет.
Т.е. нужно понять какой версии сейчас соответствует то, что в базе.
После того, как придёт понимание - нужно будет указать версию, которой соответствует база.
migrate -path $PATH_TO_YOUR_MIGRATIONS -database $YOUR_DATABASE_URL force $VERSION
Где $VERSION - это номер версии, которой соответствует структура базы.
Если у вас всего одна таблица и вы уже исправили ошибку в файле миграции - можете просто удалить таблицу `schema_migrations` и дальше не читать :)
После выполнения команды с параметрами force $VERSION флаг "dirty" будет снят и можно будет вызвать опять вашу команду с `up` и она будет успешно выполнена.