A simple command-line tool for running database migrations on LibSQL/Turso databases using golang-migrate.
- Run migrations up (apply all pending) or down (rollback specific steps)
- Support for LibSQL URLs with authentication tokens
- File system-based migration sources
- Built with Go for cross-platform compatibility
Download the latest binary from the releases page or build from source:
go install github.com/Piszmog/migrate-libsql@latest
go get -tool github.com/Piszmog/migrate-libsql
migrate-libsql -url <libsql-url> -token <auth-token> -migrations <migrations-dir> [options]
Flag | Default | Required | Description |
---|---|---|---|
-url |
- | ✅ | LibSQL database URL (e.g., libsql://database-name.turso.io ) |
-token |
- | ✅ | LibSQL authentication token |
-migrations |
- | ✅ | Path to directory containing migration files |
-direction |
up |
❌ | Migration direction: up (apply) or down (rollback) |
-steps |
1 |
❌ | Number of steps for down migration |
# Apply all pending migrations
migrate-libsql -url "libsql://my-db.turso.io" -token "your-token" -migrations "./migrations"
# Rollback the last migration
migrate-libsql -url "libsql://my-db.turso.io" -token "your-token" -migrations "./migrations" -direction down
# Rollback the last 3 migrations
migrate-libsql -url "libsql://my-db.turso.io" -token "your-token" -migrations "./migrations" -direction down -steps 3
Migration files should follow the standard golang-migrate naming convention:
migrations/
├── 001_initial_schema.up.sql
├── 001_initial_schema.down.sql
├── 002_add_users_table.up.sql
└── 002_add_users_table.down.sql