Лёгкий инструмент командной строки для управления миграциями баз данных на чистом SQL — без привязки к фреймворку.
pressly/goose
CLI и библиотека Go для управления изменениями схемы БД с помощью версионируемых SQL-файлов или Go-функций.
- Звёзды
- 11,599
- Форки
- 719
- Открытые issues
- 145
- Последний коммит
- 3 дня назад
Что это?
Goose — инструмент для миграций базы данных, который можно запускать как CLI-программу или подключать как библиотеку Go. Он управляет изменениями схемы в виде последовательных миграций: каждую можно применить при движении вперёд или откатить, а в базе данных отслеживаются уже применённые версии.
Миграции можно описывать в обычных SQL-файлах с директивами up и down или в виде Go-функций, зарегистрированных в вашем бинарном файле. Поддерживаются разные базы данных, включая Postgres, MySQL, MariaDB, SQLite, Spanner, ClickHouse, MSSQL и Vertica. Файлы миграций можно встроить в бинарный файл Go с помощью пакета embed. Среди других возможностей — обработка миграций не по порядку, подстановка переменных окружения в SQL-файлы и команда fix, которая преобразует миграции с временными метками в последовательную нумерацию для production.
Неиспользуемые драйверы можно исключить при сборке с помощью build tags, чтобы уменьшить размер бинарного файла.
Ключевые возможности
- 01Выполняет SQL-миграции и миграции в виде Go-функций.
- 02Поддерживает Postgres, MySQL, MariaDB, SQLite, Spanner, ClickHouse, MSSQL и другие базы данных.
- 03Встраивает файлы миграций в бинарные файлы Go с помощью embed.FS.
- 04Поддерживает миграции не по порядку и команду fix для последовательной нумерации.
- 05Подставляет переменные окружения в SQL-миграции.
Сценарии использования
- Версионирование схемы Go-бэкенда, работающего с Postgres или MySQL.
- Поставка миграций базы данных внутри одного бинарного файла для развёртывания.
- Запуск изменений схемы в CI, чтобы миграции одинаково применялись в разных окружениях.
Быстрый старт
- 1
Установить goose CLI с помощью Go
go install github.com/pressly/goose/v3/cmd/goose@latest - 2
Проверить состояние миграций в базе данных SQLite
goose sqlite3 ./foo.db status - 3
Применить все доступные миграции
goose sqlite3 ./foo.db up
Что важно знать
- Согласно README, для каждой команды CLI нужны драйвер базы данных и строка подключения, поэтому базу данных необходимо предоставить самостоятельно.
- Для установки CLI с помощью go install требуется Go; Homebrew предлагается только пользователям macOS.
Темы
Частые вопросы
- Что такое goose?
- CLI и библиотека Go для управления изменениями схемы БД с помощью версионируемых SQL-файлов или Go-функций. Goose — инструмент для миграций базы данных, который можно запускать как CLI-программу или подключать как библиотеку Go. Он управляет изменениями схемы в виде последовательных миграций: каждую можно применить при движении вперёд или откатить, а в базе данных отслеживаются уже применённые версии.
- goose можно использовать бесплатно? Какая у него лицензия?
- goose распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- goose всё ещё поддерживается?
- Активно поддерживается. Последний коммит в goose — 17 окт. 2026 г..
- Для чего можно использовать goose?
- Версионирование схемы Go-бэкенда, работающего с Postgres или MySQL. Поставка миграций базы данных внутри одного бинарного файла для развёртывания. Запуск изменений схемы в CI, чтобы миграции одинаково применялись в разных окружениях.
- Как установить goose?
- Установить goose CLI с помощью Go: go install github.com/pressly/goose/v3/cmd/goose@latest Проверить состояние миграций в базе данных SQLite: goose sqlite3 ./foo.db status Применить все доступные миграции: goose sqlite3 ./foo.db up
- Где скачать goose?
- Исходный код и инструкции по установке — на GitHub: https://github.com/pressly/goose
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Лёгкая ORM без лишних абстракций для TypeScript, поддерживающая PostgreSQL, MySQL и SQLite в Node.js, Bun, Deno и edge-средах.
Кроссплатформенный SQL-редактор и менеджер баз данных для Linux, macOS и Windows с поддержкой MySQL, PostgreSQL, SQLite, SQL Server и других СУБД.
Полнофункциональный инструмент для изучения баз данных: проектирование, навигация, документирование и анализ схем, включая ERD-диаграммы для крупных и запутанных баз данных.
Клиент для работы с базами данных и MCP-сервер на базе ИИ для компьютеров и веба; поддерживает Postgres, MySQL, MariaDB, SQL Server, ClickHouse и SQLite.
Бесплатный кроссплатформенный SQL-клиент для настольных ПК и инструмент для работы с базами данных: поддерживает более 100 баз через драйверы JDBC и ODBC.