README
¶
MySQL
mysql://user:password@tcp(host:port)/dbname?query
URL Query | WithInstance Config | Description |
---|---|---|
x-migrations-table |
MigrationsTable |
Name of the migrations table |
dbname |
DatabaseName |
The name of the database to connect to |
user |
The user to sign in as | |
password |
The user's password | |
host |
The host to connect to. | |
port |
The port to bind to. | |
tls |
TLS / 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-ca |
The location of the CA (certificate authority) file. | |
x-tls-cert |
The location of the client certicicate file. Must be used with x-tls-key . |
|
x-tls-key |
The location of the private key file. Must be used with x-tls-cert . |
|
x-tls-insecure-skip-verify |
Whether 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/golang-migrate/migrate"
"github.com/golang-migrate/migrate/database/mysql"
_ "github.com/golang-migrate/migrate/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
- Write down the current migration version from schema_migrations
DROP TABLE schema_migrations
- Wrap your existing migrations in transactions (BEGIN/COMMIT) if you use multiple statements within one migration.
- Download and install the latest migrate version.
- Force the current migration version with
migrate force <current_version>
.
Documentation
¶
Index ¶
- Variables
- func WithInstance(instance *sql.DB, config *Config) (database.Driver, error)
- type Config
- type Mysql
- func (m *Mysql) Close() error
- func (m *Mysql) Drop() error
- func (m *Mysql) Lock() error
- func (m *Mysql) Open(url string) (database.Driver, error)
- func (m *Mysql) Run(migration io.Reader) error
- func (m *Mysql) SetVersion(version int, dirty bool) error
- func (m *Mysql) Unlock() error
- func (m *Mysql) Version() (version int, dirty bool, err error)
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrDatabaseDirty = fmt.Errorf("database is dirty") ErrNilConfig = fmt.Errorf("no config") ErrNoDatabaseName = fmt.Errorf("no database name") ErrAppendPEM = fmt.Errorf("failed to append PEM") ErrTLSCertKeyConfig = fmt.Errorf("To use TLS client authentication, both x-tls-cert and x-tls-key must not be empty") )
View Source
var DefaultMigrationsTable = "schema_migrations"
Functions ¶
Types ¶
Click to show internal directories.
Click to hide internal directories.