~vtuson/scopecreator/twitter-template

« back to all changes in this revision

Viewing changes to src/go/src/github.com/ziutek/mymysql/examples/reconnect.go

  • Committer: Victor Palau
  • Date: 2015-03-11 14:24:42 UTC
  • Revision ID: vtuson@gmail.com-20150311142442-f2pxp111c8ynv232
public release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package main
 
2
 
 
3
import (
 
4
        "os"
 
5
        "fmt"
 
6
        "time"
 
7
        "github.com/ziutek/mymysql/autorc"
 
8
        _ "github.com/ziutek/mymysql/thrsafe"
 
9
)
 
10
 
 
11
func main() {
 
12
        user := "testuser"
 
13
        passwd := "TestPasswd9"
 
14
        dbname := "test"
 
15
        //conn := []string{"unix", "", "/var/run/mysqld/mysqld.sock"}
 
16
        conn := []string{"tcp", "", "127.0.0.1:3306"}
 
17
 
 
18
        c := autorc.New(conn[0], conn[1], conn[2], user, passwd)
 
19
 
 
20
        // Register initialisation commands
 
21
        c.Raw.Register("set names utf8")
 
22
 
 
23
        // my is in unconnected state
 
24
        checkErr(c.Use(dbname))
 
25
 
 
26
        // Now we ar connected - disconnect
 
27
        c.Raw.Close()
 
28
 
 
29
        // Drop test table if exists
 
30
        _, _, err := c.Query("drop table R")
 
31
 
 
32
        fmt.Println("You may restart MySQL sererr or down the network interface.")
 
33
        sec := 9
 
34
        fmt.Printf("Waiting %ds...", sec)
 
35
        for sec--; sec >= 0; sec-- {
 
36
                time.Sleep(1e9)
 
37
                fmt.Printf("\b\b\b\b\b%ds...", sec)
 
38
        }
 
39
        fmt.Println()
 
40
 
 
41
        // Create table
 
42
        _, _, err = c.Query(
 
43
                "create table R (id int primary key, name varchar(20))",
 
44
        )
 
45
        checkErr(err)
 
46
 
 
47
        // Kill the connection
 
48
        _, _, err = c.Query("kill %d", c.Raw.ThreadId())
 
49
        checkErr(err)
 
50
 
 
51
        // Prepare insert statement
 
52
        ins, err := c.Prepare("insert R values (?,  ?)")
 
53
        checkErr(err)
 
54
 
 
55
        // Kill the connection
 
56
        _, _, err = c.Query("kill %d", c.Raw.ThreadId())
 
57
        checkErr(err)
 
58
 
 
59
        // Bind insert parameters
 
60
        ins.Raw.Bind(1, "jeden")
 
61
        // Insert into table
 
62
        _, _, err = ins.Exec()
 
63
        checkErr(err)
 
64
 
 
65
        // Kill the connection
 
66
        _, _, err = c.Query("kill %d", c.Raw.ThreadId())
 
67
        checkErr(err)
 
68
 
 
69
        // Bind insert parameters
 
70
        ins.Raw.Bind(2, "dwa")
 
71
        // Insert into table
 
72
        _, _, err = ins.Exec()
 
73
        checkErr(err)
 
74
 
 
75
        // Kill the connection
 
76
        _, _, err = c.Query("kill %d", c.Raw.ThreadId())
 
77
        checkErr(err)
 
78
 
 
79
        // Select from table
 
80
        rows, res, err := c.Query("select * from R")
 
81
        checkErr(err)
 
82
        id := res.Map("id")
 
83
        name := res.Map("name")
 
84
        if len(rows) != 2 ||
 
85
                rows[0].Int(id) != 1 || rows[0].Str(name) != "jeden" ||
 
86
                rows[1].Int(id) != 2 || rows[1].Str(name) != "dwa" {
 
87
                fmt.Println("Bad result")
 
88
        }
 
89
 
 
90
        // Kill the connection
 
91
        _, _, err = c.Query("kill %d", c.Raw.ThreadId())
 
92
        checkErr(err)
 
93
 
 
94
        // Drop table
 
95
        _, _, err = c.Query("drop table R")
 
96
        checkErr(err)
 
97
 
 
98
        // Disconnect
 
99
        c.Raw.Close()
 
100
 
 
101
}
 
102
 
 
103
func checkErr(err error) {
 
104
        if err != nil {
 
105
                fmt.Println("Error:", err)
 
106
                os.Exit(1)
 
107
        }
 
108
}