package
4.6.4
Repository: https://github.com/operaads/migrate.git
Documentation: pkg.go.dev

# README

MySQL

mysql://user:password@tcp(host:port)/dbname?query

URL QueryWithInstance ConfigDescription
x-migrations-tableMigrationsTableName of the migrations table
x-no-lockNoLockSet to true to skip GET_LOCK/RELEASE_LOCK statements. Useful for multi-master MySQL flavors. Only run migrations from one host when this is enabled.
x-statement-timeoutStatementTimeoutAbort any statement that takes more than the specified number of milliseconds, functionally similar to Server-side SELECT statement timeouts but enforced by the client. Available for all versions of MySQL, not just >=5.7.
dbnameDatabaseNameThe name of the database to connect to
userThe user to sign in as
passwordThe user's password
hostThe host to connect to.
portThe port to bind to.
tlsTLS / SSL encrypted connection parameter; see go-sql-driver. Use any name (e.g. migrate) if you want to use a custom TLS config (x-tls- queries).
x-tls-caThe location of the CA (certificate authority) file.
x-tls-certThe location of the client certicicate file. Must be used with x-tls-key.
x-tls-keyThe location of the private key file. Must be used with x-tls-cert.
x-tls-insecure-skip-verifyWhether or not to use SSL (true|false)

Use with existing client

If you use the MySQL driver with existing database client, you must create the client with parameter multiStatements=true:

package main

import (
    "database/sql"
    
    _ "github.com/go-sql-driver/mysql"
    "github.com/operaads/migrate/v4"
    "github.com/operaads/migrate/v4/database/mysql"
    _ "github.com/operaads/migrate/v4/source/file"
)

func main() {
    db, _ := sql.Open("mysql", "user:password@tcp(host:port)/dbname?multiStatements=true")
    driver, _ := mysql.WithInstance(db, &mysql.Config{})
    m, _ := migrate.NewWithDatabaseInstance(
        "file:///migrations",
        "mysql", 
        driver,
    )
    
    m.Steps(2)
}

Upgrading from v1

  1. Write down the current migration version from schema_migrations
  2. DROP TABLE schema_migrations
  3. Wrap your existing migrations in transactions (BEGIN/COMMIT) if you use multiple statements within one migration.
  4. Download and install the latest migrate version.
  5. Force the current migration version with migrate force <current_version>.