Skip to content

Commit 5e218c6

Browse files
committed
Update README.md
1 parent 2a9ed5d commit 5e218c6

File tree

1 file changed

+116
-3
lines changed

1 file changed

+116
-3
lines changed

README.md

Lines changed: 116 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,118 @@
1-
Go MySQL Driver
2-
===============
3-
A MySQL-Driver for Go's (http://golang.org/pkg/database/sql)[database/sql] package
1+
# Go-MySQL-Driver
2+
3+
A MySQL-Driver for Go's [database/sql](http://golang.org/pkg/database/sql) package
44

55
**Current Version:** October 30, 2012 *(beta release)*
6+
7+
---------------------------------------
8+
9+
## Features
10+
* Lightweight and fast
11+
* Native Go implementation. No C-bindings, just pure Go
12+
* No unsafe operations *(type-conversions etc.)*
13+
14+
## Requirements
15+
* Go 1 or higher (Go 1.0.3 or higher recommended)
16+
* MySQL (Version 4.1 or higher), MariaDB or Percona Server
17+
18+
---------------------------------------
19+
20+
## Installation
21+
```bash
22+
$ go get github.com/Go-SQL-Driver/MySQL
23+
```
24+
Make sure [Git is installed](http://git-scm.com/downloads) on your machine.
25+
26+
## Usage
27+
_Go MySQL Driver_ is an implementation of Go's `database/sql/driver` interface, so all you need to do is import the driver and open a new Database-Connection with the given driver.
28+
29+
Use `"mysql"` as `driverName` and a valid [DSN](#dsn-data-source-name) as `dataSourceName`
30+
```go
31+
import "database/sql"
32+
import _ "code.google.com/p/go-mysql-driver/mysql"
33+
34+
db, e := sql.Open("mysql", "user:password@/dbname?charset=utf8")
35+
```
36+
37+
All further methods are listed here: http://golang.org/pkg/database/sql
38+
39+
40+
## DSN (Data Source Name)
41+
42+
The Data Source Name has a common format, like e.g. [PEAR DB](http://pear.php.net/manual/en/package.database.db.intro-dsn.php) uses it, but without type-prefix:
43+
```
44+
[username[:password]@][protocol[(address)]]/dbname[?param1=value1&paramN=valueN]
45+
```
46+
47+
A DSN in its fullest form:
48+
```
49+
username:password@protocol(address)/dbname?param=value
50+
```
51+
52+
Except the databasename all values are optional, so the shortest possible DSN is:
53+
```
54+
/dbname
55+
```
56+
57+
### Password
58+
Passwords may consist of any char. No escaping necessary.
59+
60+
### Protocol
61+
See [net.Dial](http://golang.org/pkg/net/#Dial) for more information which networks are available.
62+
In general you should use an Unix-socket if available and TCP otherwise for best performance.
63+
64+
### Address
65+
For TCP and UDP networks, addresses have the form `host:port`.
66+
If `host` is a literal IPv6 address, it must be enclosed in square brackets.
67+
The functions [net.JoinHostPort](http://golang.org/pkg/net/#JoinHostPort) and [net.SplitHostPort](http://golang.org/pkg/net/#SplitHostPort) manipulate addresses in this form.
68+
69+
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`.
70+
71+
### Parameters
72+
**Parameters are case-sensitive!**
73+
74+
Possible Parameters are:
75+
* `charset`: *"SET NAMES `value`"*
76+
* _(deprecated)_ <s>`keepalive`: If `value` equals 1, the keepalive-time is set to [wait_timeout](https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_wait_timeout)-60, which pings the Server 60 seconds before the MySQL server would close the connection to avoid timeout. If the value is greater than 1, the server gets pinged every `value` seconds without a command. System variables are executed **before**, so it may be possible to change the *wait_timeout* value.</s> **With Go 1.0.3 this is not necessary anymore. Now closed connections can be automatically detected and handled.**
77+
* _(pending)_ <s>`tls`</s>: will enable SSL/TLS-Encryption
78+
* _(pending)_ <s>`compress`</s>: will enable Compression
79+
80+
All other parameters are interpreted as system variables:
81+
* `time_zone`: *"SET time_zone='`value`'"*
82+
* `tx_isolation`: *"SET [tx_isolation](https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_tx_isolation)='`value`'"*
83+
* `param`: *"SET `param`=`value`"*
84+
85+
### Examples
86+
```
87+
user@unix(/path/to/socket)/dbname?charset=utf8
88+
```
89+
90+
```
91+
user:password@tcp(localhost:5555)/dbname?charset=utf8
92+
```
93+
94+
```
95+
user:password@/dbname
96+
```
97+
98+
```
99+
user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname
100+
```
101+
102+
---------------------------------------
103+
104+
## License
105+
Go-MySQL-Driver is licensed under the [Mozilla Public License Version 2.0](https://raw.github.com/Go-SQL-Driver/MySQL/master/LICENSE)
106+
107+
Mozilla summarizes the license scope as follows:
108+
> MPL: The copyleft applies to any files containing MPLed code.
109+
110+
111+
That means:
112+
* You can **use** the **unchanged** source code both in private as also commercial
113+
* You **needn't publish** the source code of your library as long the files licensed under the MPL 2.0 are **unchanged**
114+
* 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)
115+
116+
Please read the [MPL 2.0 FAQ](http://www.mozilla.org/MPL/2.0/FAQ.html) if you have further questions regarding the license.
117+
118+
You can read the full terms here: [LICENSE](https://raw.github.com/Go-SQL-Driver/MySQL/master/LICENSE)

0 commit comments

Comments
 (0)