A MySQL-Driver for Go's database/sql package
Current tagged Release: March 2, 2013 (stable beta 4)
- DSN (Data Source Name)
- Testing / Development
- Lightweight and fast
- Native Go implementation. No C-bindings, just pure Go
- Connections over TCP/IPv4, TCP/IPv6 or Unix Sockets
- Automatic handling of broken connections
- Automatic Connection-Pooling (by database/sql package)
- Go 1.0.3 or higher
- MySQL (Version 4.1 or higher), MariaDB or Percona Server
$ go get github.com/Go-SQL-Driver/MySQL
Make sure Git is installed on your machine and in your system's
Go MySQL Driver is an implementation of Go's
database/sql/driver interface, so all you need to do is to import the driver and open a new database connection with the given driver.
driverName and a valid DSN as
import "database/sql" import _ "github.com/Go-SQL-Driver/MySQL" db, e := sql.Open("mysql", "user:password@/dbname?charset=utf8")
All further methods are listed here: http://golang.org/pkg/database/sql
DSN (Data Source Name)
The Data Source Name has a common format, like e.g. PEAR DB uses it, but without type-prefix (optional parts marked by squared brackets):
A DSN in its fullest form:
Except of the databasename, all values are optional. So the minimal DSN is:
If you do not want to preselect a database, leave
Passwords can consist of any character. Escaping is not necessary.
See net.Dial for more information which networks are available. In general you should use an Unix-socket if available and TCP otherwise for best performance.
For TCP and UDP networks, addresses have the form
host is a literal IPv6 address, it must be enclosed in square brackets.
The functions net.JoinHostPort and net.SplitHostPort manipulate addresses in this form.
For Unix-sockets the address is the absolute path to the MySQL-Server-socket, e.g.
Parameters are case-sensitive!
Possible Parameters are:
charset: "SET NAMES
value". If multiple charsets are set (seperated by a comma), the following charset is used if setting the charset failes. This enables support for
utf8mb4(introduced in MySQL 5.5.3) with fallback to
utf8for older servers.
: will enable SSL/TLS-Encryption
: will enable Compression
All other parameters are interpreted as system variables:
autocommit: "SET autocommit='
time_zone: "SET time_zone='
tx_isolation: "SET tx_isolation='
No Database preselected:
Testing / Development
To run the driver tests you may need to adjust the configuration. See this Wiki-Page for details.
Go-MySQL-Driver is licensed under the Mozilla Public License Version 2.0
Mozilla summarizes the license scope as follows:
MPL: The copyleft applies to any files containing MPLed code.
- You can use the unchanged source code both in private as also commercial
- You needn't publish the source code of your library as long the files licensed under the MPL 2.0 are unchanged
- You must publish the source code of any changed files licensed under the MPL 2.0 under a) the MPL 2.0 itself or b) a compatible license (e.g. GPL 3.0 or Apache License 2.0)
Please read the MPL 2.0 FAQ if you have further questions regarding the license.
You can read the full terms here: LICENSE