Goose

Pressly Inc.·Pressly.Goose

A database migration tool. Supports SQL migrations and Go functions.

Goose is a database migration tool. Both a CLI and a library. Manage your database schema by creating incremental SQL changes or Go functions. Features - Works against multiple databases: - Postgres, MySQL, SQLite, YDB, ClickHouse, MSSQL, Vertica, and more. - Supports Go migrations written as plain functions. - Supports embedded migrations. - Out-of-order migrations. - Seeding data. - Environment variable substitution in SQL migrations. - ... and more.

winget install --id Pressly.Goose --exact --source winget

Latest 3.28.0·September 2, 2026

Release Notes

Added

  • CLI: azuresql driver for Azure SQL with Microsoft Entra ID (Azure AD) authentication via fedauth connection string parameters, e.g. goose azuresql "sqlserver://host?database=mydb&fedauth=ActiveDirectoryDefault" status. Excluded when building with the no_mssql or no_azuresql tags (#1109)
  • MySQL/MariaDB table-based Locker via lock.NewMySQLTableLocker, the MySQL counterpart to the Postgres table locker from #993, accepting the same TableLockerOption set (#1075)

Changed

  • Minimum Go version is now 1.26
  • ClickHouse: new goose_db_version tables are created with ORDER BY (version_id) instead of ORDER BY (date). Existing tables are unchanged (#1085)
  • MySQL/TiDB: the tstamp column is now DATETIME instead of TIMESTAMP, which is capped at 2038-01-19 (#1053). Only newly created tables are affected; existing tables can be updated with: ALTER TABLE goose_db_version MODIFY tstamp datetime NULL DEFAULT CURRENT_TIMESTAMP;
  • Various dependency upgrades

Fixed

  • goose create returns a clear "file exists" error, including the path, instead of %!w() when the migration file already exists (#1104)

Installer type: portable

x64—C8D66777B66638CC215ABE92DB305CC5BA41539CD57AA36C99DEAC7F52730666
arm64—8EF2F1525A51504A43E3B9FB2701AC50BE32B3E150E97096B4393B370F7051F4

Details

Homepage
https://github.com/pressly/goose
License
MIT
Publisher
Pressly Inc.
Support
https://github.com/pressly/goose/issues
Copyright
Original work Copyright (c) 2012 Liam Staskawicz Modified work Copyright (c) 2016 Vojtech Vitek Modified work Copyright (c) 2021 Michael Fridman, Vojtech Vitek
Moniker
goose

Tags

databasedatabase-migrationsgogolangmigrationmigrationsmysqlpostgrespostgresqlschemasqlsqlite

Older versions (8)

3.27.3
x64—7957B982E4374A377649483229ED2F5E03DC53A0DC9E83A682C3D8FC48CA4B3E
arm64—ADD53A24A906E0F64F2DADA1F1F570CB137B443C7B5E2957346AEDCA77458ED0
3.27.2
x64—0A802CB50E2B3EE7950BC73A3C31E8F1C186E252731B6E2B1C110DBDC3623646
arm64—2BC6308CB80EB03D36A75BAC828DE9F1E80EA9B5247F35AC6EAD543F81AD6E46
3.27.1
x64—0882CE0DD5887E82B4D1F8FB0C436C72205A619000081193AC1DAE81C7371C62
arm64—1ED9FD19B86BA52B96757155EAE6459E161BFB9B0722D158E9631DAAD029C8F3
3.27.0
x64—C73E4F4BC52E74694831E982B5592FD194376E981174A1A6B99F7A21C3345E60
arm64—DA482EA3F7180C7FFA6E77853B83F38B9CDC0B8FCE3D96255318056CE66C2115
3.26.0
x64—5CBE8B6CA461AC92A289650B6E0D558023A207EEC7D7511786CA7A6FC75A3C9B
arm64—68D3D75BDD7FFBC5847B34FECA4F77671856F00BB395CB3E3DB55153162BD3E8
3.25.0
x64—8FAF81AF4E8AFA73F1ED04608B86787228F33C7D8C1B251D3ED9C3A38DE94818
arm64—F1847B16294745FFD9EF84B1669471E0D2DB4DB089BD9ADD2ED4F3A7E2F3E299
3.24.3
x64—EF9C0C43339C1A0E53F28ED92D686EFC481E080AC41E5A74F7125C8A4717539C
arm64—49C153EC536BA85D9687E6CD1362E65262AE672B67CBBFA0EA700A91510D2D00
3.24.2
x64—609BBA293C03473D7AF6C586F88FDE15FAEA0B9C101715968DAC5F9DB6C703E5
arm64—5EE26C69C8AB6CF0E7B24F01F71D6FA61B5258D581ABFFB78185CF331CCC1BA6