Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
go-dbmigrate — Библиотека Go и CLI для управления миграциями схемы базы данных с поддержкой PostgreSQL, MySQL, SQLite и Cassandra, включая рабочие процессы миграций up/down. | Kitploit
Инструменты/GitHubGitHub/moisei-dev/go-dbmigrate
Аудит конфигурацииDevSecOpsУтилиты и фреймворкиБезопасность Цепочки ПоставокБезопасность Баз Данных
GitHubmoisei-dev/go-dbmigrate

go-dbmigrate

Библиотека Go и CLI для управления миграциями схемы базы данных с поддержкой PostgreSQL, MySQL, SQLite и Cassandra, включая рабочие процессы миграций up/down.

Репозиторий
235 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

migrate

Build Status GoDoc

Хелпер для миграций, написанный на Go. Используйте его в своём существующем коде на Golang или запускайте команды через CLI.

GoCode   import github.com/mattes/migrate/migrate
CLI      go get -u github.com/mattes/migrate

Возможности

  • Очень простая реализация интерфейса Driver.
  • Корректное завершение запущенных миграций по ^C.
  • Никаких магических процедур поиска путей, никаких жёстко заданных конфигурационных файлов.
  • CLI построен поверх пакета migrate.

Доступные драйверы

  • PostgreSQL
  • Cassandra
  • SQLite
  • MySQL (экспериментальный)
  • Bash (планируется)

Нужен другой драйвер? Просто реализуйте интерфейс Driver и откройте PR.

Использование из терминала

# установка
go get github.com/mattes/migrate

# создать новый файл миграции по указанному пути
migrate -url driver://url -path ./migrations create migration_file_xyz

# применить все доступные миграции
migrate -url driver://url -path ./migrations up

# откатить все миграции
migrate -url driver://url -path ./migrations down

# откатить последнюю применённую миграцию, затем запустить её снова.
migrate -url driver://url -path ./migrations redo

# выполнить команду down, а затем up
migrate -url driver://url -path ./migrations reset

# показать текущую версию миграции
migrate -url driver://url -path ./migrations version

# применить следующие n миграций
migrate -url driver://url -path ./migrations migrate +1
migrate -url driver://url -path ./migrations migrate +2
migrate -url driver://url -path ./migrations migrate +n

# откатить предыдущие n миграций
migrate -url driver://url -path ./migrations migrate -1
migrate -url driver://url -path ./migrations migrate -2
migrate -url driver://url -path ./migrations migrate -n

# перейти к конкретной миграции
migrate -url driver://url -path ./migrations goto 1
migrate -url driver://url -path ./migrations goto 10
migrate -url driver://url -path ./migrations goto v

Использование в Go

Смотрите GoDoc здесь: http://godoc.org/github.com/mattes/migrate/migrate

import "github.com/mattes/migrate/migrate"

// Импортируйте любые необходимые драйверы, чтобы они были зарегистрированы и доступны
import _ "github.com/mattes/migrate/driver/mysql"

// используйте синхронные версии функций миграции ...
allErrors, ok := migrate.UpSync("driver://url", "./path")
if !ok {
  fmt.Println("О нет ...")
  // сделайте что-нибудь со срезом allErrors
}

// используйте асинхронную версию функций миграции ...
pipe := migrate.NewPipe()
go migrate.Up(pipe, "driver://url", "./path")
// pipe — это, по сути, просто канал
// напишите свой собственный слушатель канала. см. writePipe() в main.go в качестве примера.

Файлы миграций

Формат файлов миграций выглядит так:

001_initial_plan_to_do_sth.up.sql     # инструкции для up-миграции
001_initial_plan_to_do_sth.down.sql   # инструкции для down-миграции
002_xxx.up.sql
002_xxx.down.sql
...

Почему два файла? Так вы всё ещё можете сделать что-то вроде psql -f ./db/migrations/001_initial_plan_to_do_sth.up.sql, и нет необходимости в каком-либо пользовательском языке разметки для разделения up- и down-миграций. Обратите внимание, что расширение имени файла зависит от драйвера.

Альтернативы

  • https://bitbucket.org/liamstask/goose
  • https://github.com/tanel/dbmigrate
  • https://github.com/BurntSushi/migration
  • https://github.com/DavidHuie/gomigrate
  • https://github.com/rubenv/sql-migrate
Скачать инструмент