Skip to content

Commit 1763f17

Browse files
authored
README: document DSN system var quoting rules (#405)
Improve documentation of quoting rules for system var values in DSN. #405
1 parent 1983bc3 commit 1763f17

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

README.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -301,13 +301,21 @@ I/O write timeout. The value must be a decimal number with an unit suffix ( *"ms
301301

302302
##### System Variables
303303

304-
All other parameters are interpreted as system variables:
305-
* `autocommit`: `"SET autocommit=<value>"`
306-
* [`time_zone`](https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html): `"SET time_zone=<value>"`
307-
* [`tx_isolation`](https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_tx_isolation): `"SET tx_isolation=<value>"`
308-
* `param`: `"SET <param>=<value>"`
304+
Any other parameters are interpreted as system variables:
305+
* `<boolean_var>=<value>`: `SET <boolean_var>=<value>`
306+
* `<enum_var>=<value>`: `SET <enum_var>=<value>`
307+
* `<string_var>=%27<value>%27`: `SET <string_var>='<value>'`
308+
309+
Rules:
310+
* The values for string variables must be quoted with '
311+
* The values must also be [url.QueryEscape](http://golang.org/pkg/net/url/#QueryEscape)'ed!
312+
(which implies values of string variables must be wrapped with `%27`)
313+
314+
Examples:
315+
* `autocommit=1`: `SET autocommit=0`
316+
* [`time_zone=%27Europe%2FParis%27`](https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html): `SET time_zone='Europe/Paris'`
317+
* [`tx_isolation=%27REPEATABLE-READ%27`](https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_tx_isolation): `SET tx_isolation=REPEATABLE-READ`
309318

310-
*The values must be [url.QueryEscape](http://golang.org/pkg/net/url/#QueryEscape)'ed!*
311319

312320
#### Examples
313321
```

0 commit comments

Comments
 (0)