mysql

package module
v0.0.0-...-a48f79b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 25, 2013 License: MPL-2.0 Imports: 17 Imported by: 0

README

Go-MySQL-Driver

A MySQL-Driver for Go's database/sql package

Go-MySQL-Driver logo

Current tagged Release: February 25, 2013 (stable beta 3)

Build Status (master branch)



Features

  • Lightweight and fast
  • Native Go implementation. No C-bindings, just pure Go
  • No unsafe operations (e.g. type-conversions)
  • Connections over TCP/IPv4, TCP/IPv6 or Unix Sockets
  • Automatic handling of broken connections
  • Automatic Connection-Pooling (by database/sql package)

Requirements

  • Go 1.0.3 or higher
  • MySQL (Version 4.1 or higher), MariaDB or Percona Server

Installation

Simple install the package to your $GOPATH with the [go tool](http://golang.org/cmd/go/ go command) from shell:

$ go get github.com/Go-SQL-Driver/MySQL

Make sure Git is installed on your machine and in your system's PATH.

Usage

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.

Use mysql as driverName and a valid DSN as dataSourceName

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

Examples are available in our Wiki.

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):

[username[:password]@][protocol[(address)]]/dbname[?param1=value1&paramN=valueN]

A DSN in its fullest form:

username:password@protocol(address)/dbname?param=value

Except of the databasename, all values are optional. So the minimal DSN is:

/dbname

If you do not want to preselect a database, leave dbname empty:

/
Password

Passwords can consist of any character. Escaping is not necessary.

Protocol

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.

Address

For TCP and UDP networks, addresses have the form host:port. If 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. /var/run/mysqld/mysqld.sock or /tmp/mysql.sock.

Parameters

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 utf8 for older servers.
  • (pending) tls: will enable SSL/TLS-Encryption
  • (pending) compress: will enable Compression

All other parameters are interpreted as system variables:

  • time_zone: "SET time_zone='value'"
  • tx_isolation: "SET tx_isolation='value'"
  • param: "SET param=value"
Examples
user@unix(/path/to/socket)/dbname?charset=utf8
user:password@tcp(localhost:5555)/dbname?charset=utf8mb4,utf8
user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname
user:password@/dbname

No Database preselected:

user:password@/

Testing / Development

To run the driver tests you may need to adjust the configuration. See this Wiki-Page for details.


License

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.

That means:

  • 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

Documentation

Overview

Go MySQL Driver - A MySQL-Driver for Go's database/sql package

Index

Constants

View Source
const (
	MIN_PROTOCOL_VERSION = 10
	MAX_PACKET_SIZE      = 1<<24 - 1
	TIME_FORMAT          = "2006-01-02 15:04:05"
)
View Source
const (
	COM_QUIT commandType = iota + 1
	COM_INIT_DB
	COM_QUERY
	COM_FIELD_LIST
	COM_CREATE_DB
	COM_DROP_DB
	COM_REFRESH
	COM_SHUTDOWN
	COM_STATISTICS
	COM_PROCESS_INFO
	COM_CONNECT
	COM_PROCESS_KILL
	COM_DEBUG
	COM_PING
	COM_TIME
	COM_DELAYED_INSERT
	COM_CHANGE_USER
	COM_BINLOG_DUMP
	COM_TABLE_DUMP
	COM_CONNECT_OUT
	COM_REGISTER_SLAVE
	COM_STMT_PREPARE
	COM_STMT_EXECUTE
	COM_STMT_SEND_LONG_DATA
	COM_STMT_CLOSE
	COM_STMT_RESET
	COM_SET_OPTION
	COM_STMT_FETCH
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ClientFlag

type ClientFlag uint32
const (
	CLIENT_LONG_PASSWORD ClientFlag = 1 << iota
	CLIENT_FOUND_ROWS
	CLIENT_LONG_FLAG
	CLIENT_CONNECT_WITH_DB
	CLIENT_NO_SCHEMA
	CLIENT_COMPRESS
	CLIENT_ODBC
	CLIENT_LOCAL_FILES
	CLIENT_IGNORE_SPACE
	CLIENT_PROTOCOL_41
	CLIENT_INTERACTIVE
	CLIENT_SSL
	CLIENT_IGNORE_SIGPIPE
	CLIENT_TRANSACTIONS
	CLIENT_RESERVED
	CLIENT_SECURE_CONN
	CLIENT_MULTI_STATEMENTS
	CLIENT_MULTI_RESULTS
)

type FieldFlag

type FieldFlag uint16
const (
	FLAG_NOT_NULL FieldFlag = 1 << iota
	FLAG_PRI_KEY
	FLAG_UNIQUE_KEY
	FLAG_MULTIPLE_KEY
	FLAG_BLOB
	FLAG_UNSIGNED
	FLAG_ZEROFILL
	FLAG_BINARY
	FLAG_ENUM
	FLAG_AUTO_INCREMENT
	FLAG_TIMESTAMP
	FLAG_SET
	FLAG_UNKNOWN_1
	FLAG_UNKNOWN_2
	FLAG_UNKNOWN_3
	FLAG_UNKNOWN_4
)

type FieldType

type FieldType byte
const (
	FIELD_TYPE_DECIMAL FieldType = iota
	FIELD_TYPE_TINY
	FIELD_TYPE_SHORT
	FIELD_TYPE_LONG
	FIELD_TYPE_FLOAT
	FIELD_TYPE_DOUBLE
	FIELD_TYPE_NULL
	FIELD_TYPE_TIMESTAMP
	FIELD_TYPE_LONGLONG
	FIELD_TYPE_INT24
	FIELD_TYPE_DATE
	FIELD_TYPE_TIME
	FIELD_TYPE_DATETIME
	FIELD_TYPE_YEAR
	FIELD_TYPE_NEWDATE
	FIELD_TYPE_VARCHAR
	FIELD_TYPE_BIT
)
const (
	FIELD_TYPE_NEWDECIMAL FieldType = iota + 0xf6
	FIELD_TYPE_ENUM
	FIELD_TYPE_SET
	FIELD_TYPE_TINY_BLOB
	FIELD_TYPE_MEDIUM_BLOB
	FIELD_TYPE_LONG_BLOB
	FIELD_TYPE_BLOB
	FIELD_TYPE_VAR_STRING
	FIELD_TYPE_STRING
	FIELD_TYPE_GEOMETRY
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL