Open
Description
Describe the Bug
When using a percent encoded URI the sqlite driver will fail to connect to database, saying that it cannot be found.
Steps to Reproduce
Using the sqlite driver with percent encoded value for URI.
migrate.NewWithSourceInstance("iofs", d, "/Magic%20Data/db.sqlite")
Expected Behavior
The database connection to successfully connect.
Migrate Version
v4.18.2
Loaded Source Drivers
iofs
Loaded Database Drivers
sqlite
Go Version
go version go1.23.4 darwin/arm64
Additional context
I have managed to instead use NewWithInstance
instead and connect to the database via sql.Open
manually.
package migrations
import (
"database/sql"
"embed"
"errors"
"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/sqlite"
"github.com/golang-migrate/migrate/v4/source/iofs"
)
//go:embed *.sql
var migrationsFS embed.FS
func MigrateDB(db *sql.DB) error {
d, err := iofs.New(migrationsFS, ".")
if err != nil {
return err
}
driver, err := sqlite.WithInstance(db, &sqlite.Config{})
if err != nil {
return err
}
m, err := migrate.NewWithInstance("iofs", d, "", driver)
if err != nil {
return err
}
if err := m.Up(); err != nil && !errors.Is(err, migrate.ErrNoChange) {
return err
}
return nil
}
Metadata
Metadata
Assignees
Labels
No labels