@egorggegor

Почему не запускаются миграции?

Всем привет!

Хочу сделать первую миграцию для своей базы с помощью migrate. Но выводит следующую ошибку:
60cb5dad11980759136082.png

В чем может быть проблема?

P. S.
Вот запущенный докер:
60cb5deb64833127492704.png

Вот код при миграции up:
CREATE TABLE users
(
    id            serial       not null unique,
    name          varchar(255) not null,
    username      varchar(255) not null unique,
);
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
EvgenyMamonov
@EvgenyMamonov Куратор тега Go
Senior software developer, system architect
Обычно это означает, что была попытка миграции ранее и произошла ошибка во время миграции.
Например у вас всего одна миграция (версия 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` и она будет успешно выполнена.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы