golang-migrate игнорирует файл миграции. Как исправить?

Во время миграций, golang-migrate должен создавать две таблицы, но по итогу создаётся только вторая, а первая игнорируется.

Вот структура файлов в директории /db/migrations:

000001_create_tasks_table.down.sql
000001_create_tasks_table.up.sql
000002_create_tokens_table.down.sql
000002_create_tokens_table.up.sql

Каждый из этих файлов я уже пытался выполнять у себя в локальной БД, и все они успешно выполнялись, а значит, скорее всего, ошибка не в SQL коде.

Makefile:

FROM golang:alpine as builder

#Update depences
RUN apk update && apk upgrade && apk add --no-cache git curl
#Create build directory
RUN mkdir /app/bin -p
#Download migrate app
RUN curl -L https://github.com/golang-migrate/migrate/releases/download/v4.15.1/migrate.linux-amd64.tar.gz |\
    tar xvz migrate -C /app/bin
#Download health check utility
RUN GRPC_HEALTH_PROBE_VERSION=v0.4.6 && \
    wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
    chmod +x /bin/grpc_health_probe
#Set home directory
WORKDIR /app
#Enable go option
ENV GO111MODULE=on
#Copy go.mod
ADD go.mod go.sum /app/
#Download go depences
RUN go mod download
#Copy all local files
ADD . /app
#Build app
RUN GOOS=linux go build -o bin ./...

#Run container
FROM alpine:latest
#Install packages
RUN apk --no-cache add ca-certificates tzdata
#Create home directory
WORKDIR /app
#Install migrate tool
COPY --from=builder /app/bin/migrate /usr/local/bin
#Copy build file
COPY --from=builder /app/bin/app ./app
#Copy migration dirx
COPY --from=builder /app/db/migrations ./migrations
#Copy migration dir
COPY --from=builder /bin/grpc_health_probe /bin/grpc_health_probe
#for solving time.LoadLocation errors in container, https://stackoverflow.com/questions/59094236/error-unknown-time-zone-america-los-angeles-in-time-loadlocation
#ADD https://github.com/golang/go/raw/master/lib/time/zoneinfo.zip /zoneinfo.zip
#ENV ZONEINFO /zoneinfo.zip

CMD ["./app"]

Далее уже сам pod в k8s вызывает golang-migrate командой:

command: [ 'sh', '-c', 'migrate -source file://migrations -database "$MIGRATE_URL" up' ]

По идее, должно создаваться две таблицы, но по итогу создаётся лишь одна.

Из-за чего golang-migrate может игнорировать файлы и не создавать таблицы? И как исправить данную проблему?

P.S. Если необходимо, я могу предоставить SQL команды миграций.


Ответы (0 шт):