Mysql: рдорд╛рд░реЗ рдЧрдП рдХрдиреЗрдХреНрд╢рди рдкрд░ рдЕрдЬреАрдм рддреНрд░реБрдЯрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рджрд┐рд╕ре░ 2013  ┬╖  25рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: go-sql-driver/mysql

рдЬрдм рдореИрдВ рдЙрди рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рдорд╛рд░рддрд╛ рд╣реВрдВ рдЬрд┐рдирдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдорд┐рд▓рддреА рд╣реИрдВ:

[MySQL] 2013/12/05 22:17:19 packets.go:30: EOF
[MySQL] 2013/12/05 22:17:19 statement.go:24: Invalid Connection
[MySQL] 2013/12/05 22:17:27 packets.go:30: EOF
[MySQL] 2013/12/05 22:17:27 statement.go:24: Invalid Connection
[MySQL] 2013/12/05 22:17:39 packets.go:30: EOF
[MySQL] 2013/12/05 22:17:39 statement.go:24: Invalid Connection

рдореБрдЭреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЖрджрдд рд╣реИ:

2013 (HY000) at line 1: Lost connection to MySQL server during query

рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдЙрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдорд╛рд░рд╛ рдЧрдпрд╛ред рдХреНрдпрд╛ рдпрд╣ рдбреНрд░рд╛рдЗрд╡рд░ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ / рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдорд╛рд╕реНрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдо рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдХрд┐рд╕реА рддрд░рд╣?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ:

package main

import (
    "database/sql"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, _ := sql.Open("mysql", "/")
    defer db.Close()
    tx, err := db.Begin()
    if err != nil {
        panic(err)
    }
    defer tx.Commit()
    stmt1, err := tx.Prepare("SELECT 1")
    if err != nil {
        panic(err)
    }
    rows1, err := stmt1.Query()
    if err != nil {
        panic(err)
    }
    stmt2, err := tx.Prepare("SELECT 2")
    if err != nil {
        // rows1 is not closed -> triggers busy buffer because transaction is on one connection
        // and stmt1, stmt2 use the same one.
        // Move rows1.Close() in front of tx.Prepare and it disappears
        panic(err)
    }
    rows2, err := stmt2.Query()
    if err != nil {
        panic(err)
    }
    rows1.Close()
    rows2.Close()
    stmt1.Close()
    stmt2.Close()
}

рд╕рднреА 25 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдирд╣реАрдВ, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╕рд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИред рддреНрд░реБрдЯрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдкрд▓рдХ:
рд▓реЗрдХрд┐рди EOF рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд░реНрдгрдирд╛рддреНрдордХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ statement.go:24: Invalid Connection рддреНрд░реБрдЯрд┐рдпрд╛рдВ http://golang.org/issue/5718 рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ
рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдкреИрдХреЗрдЬ рдореЗрдВ рдСрдЯреЛ-рдкреБрди: рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ рддрдп рд╣реЛрдиреЗ рдкрд░ рд╡реЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

EOF рд╕рд┐рд░реНрдл io.EOF , рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЛ рдореБрд╣рд╛рд╡рд░рд╛ рдХреА рддрд░рд╣ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рд╢реБрджреНрдз рдкреИрдХреЗрдЬ рдореЗрдВ, рдЬрд╣рд╛рдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ)ред рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЕрд░реНрде рдХрд╛ рдХрд╣реАрдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдЖрдкрдХреА рд░рд╛рдп?

рдореИрдВ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ @gkristic рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддрд╛ рд╣реИред рд╡рд╣ рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ / рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдХреЛрдб рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ред statement.go:24: Invalid Connection рддреНрд░реБрдЯрд┐рдпрд╛рдВ http://golang.org/issue/5718 рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ @julienschmidt рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдкреИрдХреЗрдЬ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред DB рд╕реНрддрд░ рдкрд░ рдЪрд▓рдиреЗ рдкрд░ Query() рдФрд░ Exec() рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рджрд╕ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк Stmt рд░рд┐рд╕реАрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреЛрдИ рдирд╣реАрдВред

"рдЕрдорд╛рдиреНрдп рдХрдиреЗрдХреНрд╢рди" @xaprb рдиреЗ рджреЗрдЦрд╛ рдХрд┐ MySQL рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЬрдм Close() рдХреЛ рддреИрдпрд╛рд░ рдХрдерди рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд stmt.mc.netConn рдпрд╣рд╛рдБ рд╢реВрдиреНрдп ErrBadConn рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реА рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХрдорд╛рддреНрд░ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ; рдбреЗрдЯрд╛рдмреЗрд╕ / рдПрд╕рдХреНрдпреВрдПрд▓ (рдЧреЛ 1.2) рдореЗрдВ рдХреБрдЫ рд╕рдорд╕рд╛рдордпрд┐рдХ рдореБрджреНрджреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рднреА рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп (рдбреЗрдЯрд╛рдмреЗрд╕ / рдПрд╕рдХреНрдпреВрдПрд▓) рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЕрдЧрд▓реЗ putConn() noteUnusedDriverStatement() ред рд▓реЗрдХрд┐рди putConn() removeOpenStmt() рдЪрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ ( (*Stmt) finalClose() )ред рдпрджрд┐, рд▓рдВрдмрд┐рдд onPut рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдиреЗрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрдиреЗрдХреНрд╢рди рд╕реАрдорд╛ рдХреЗ рдХрд╛рд░рдг рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреИрдХреЗрдЬ рдлрд┐рд░ рд╕реЗ рдХрдерди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдВрджреЗрд╢ред рдпрд╣ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред

IMHO рдЧреЛ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ / рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛ рдХреБрдЫ рд╕рд╛рд╡рдзрд╛рди рдлрд┐рд░ рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ ...

@gkristic рдХреНрдпрд╛ рдЖрдк рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ?

рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдкреИрдХреЗрдЬ рдореЗрдВ рдХреБрдЫ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ Go 1.3 рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реБрдзрд╛рд░ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдкрд░ рджреЛрдмрд╛рд░рд╛ рдЧреМрд░ рдХрд░рдирд╛ рдореЗрд░реА рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рд╣реИред

рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ https://code.google.com/p/go/issues/list рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЗрди рд╢рд░реНрддреЛрдВ (рдЕрд░реНрдерд╛рддреН, рдбреЗрдЯрд╛рдмреЗрд╕ / рдПрд╕рдХреНрдпреВрдПрд▓ рджреНрд╡рд╛рд░рд╛ рдХрдиреЗрдХреНрд╢рди рдЦреЛ рдпрд╛ рдбрдмрд▓-рдХреНрд▓реЛрдЬрд╝реНрдб) рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИрдВ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ "рдЕрдорд╛рдиреНрдп рдХрдиреЗрдХреНрд╢рди" рд╕рдВрджреЗрд╢ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЪреБрдкрдЪрд╛рдк рдЫреЛрдбрд╝ рджреЗрдЧрд╛ред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдмрд╛рдж рдореЗрдВ рдпрд╛ рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдбрд░рд╛рд╡рдирд╛, рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИ; рдХрд╖реНрдЯрдкреНрд░рдж, рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдХрд░рддреЗ рд╣реИрдВ; рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рднреНрд░рд╛рдордХ, рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдПрдХ рд╕рдорд╛рди рд╕рдВрджреЗрд╢ рдХрд╣реАрдВ рдФрд░ (рдФрд░ рд▓рд╛рдЗрди рдирдВрдмрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдЫрдкрд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реБрдП рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╛ рддреЛ stmt.mc рдпрд╛ stmt.mc.netConn рдХрдерди Close() рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╢реВрдиреНрдп рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдЧреЗ рд▓реЙрдЧрд┐рдВрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд╛рдкрд╕реА рдХрд╛ рдкрдХреНрд╖ рд▓реВрдВрдЧрд╛ред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ driver.ErrBadConn рд╡рд╣рд╛рдБ (рдЬреИрд╕рд╛ рдХрд┐ 4d3764bbcbc17c31575642626beab1bcdc30c301 рдкрд░ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдмрд┐рд▓реНрдХреБрд▓ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдХрднреА рднреА рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреНрд▓реЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рд░рд┐рдЯрд░реНрди рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд╢рд╛рдпрдж рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЛ рдЯреНрд╡рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реВрдВрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, errLog рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрджрд░ рдЖрд░рдВрднрд┐рдХ рд╣реИ рдФрд░ рдирд┐рдЬреА рд╣реИред рдпрд╣ рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ; рдпрд╛рдиреА, рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрди рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рднреА рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, syslog, рдЬреЛ рднреА рд╣реЛ)ред рдбреНрд░рд╛рдЗрд╡рд░ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреВрд╕рд░рд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗред

рдЬреИрд╕реЗ рд╣реА рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЦрд╛рд▓реА рд╕рдордп рд╣реЛрдЧрд╛, рдореИрдВ рдЙрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рд▓рд┐рдЦреА рдереАред

рдзрдиреНрдпрд╡рд╛рдж!

рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЗ рд╡рд┐рд╖рдп рдореЗрдВ https://github.com/go-sql-driver/mysql/pull/182 (рдПрдХ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рд▓рдп)?

@arnehormann рдУрд╣, рдпрд╛рд░ ... рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реАред рдореИрдВ v1.1 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдорд╛рд╕реНрдЯрд░ рдкрд░ рдЕрдиреНрдп рд╕рд╛рдорд╛рди рдХреА рдЬрд╛рдБрдЪ рдХреА, рд▓реЗрдХрд┐рди рд▓реЙрдЧрд┐рдВрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдФрд░ рдзрдиреНрдпрд╡рд╛рдж!

@ рд╡рд┐рдХрдЯ рд╕рдорд╕реНрдпрд╛ рдореБрд╕реНрдХрд░рд╛рд╣рдЯ :

рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдкреАрдЖрд░рдПрд╕ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ :)

рдЕрд░реЗ рджреЛрд╕реНрддреЛрдВ, рдпрд╣рд╛рдБ рдЧреЛ-рдПрд╕рдХреНрдпреВрдПрд▓-рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░реЛрди рдореЗрдВ рдЬреЛ рдЧреЛрд░реЛрдЗрдЯрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

[MySQL] 2014/05/14 20:33:05 packets.go:356: Busy buffer
[MySQL] 2014/05/14 20:33:05 packets.go:73: EOF
[MySQL] 2014/05/14 20:33:05 statement.go:24: Invalid Connection
[MySQL] 2014/05/14 20:33:05 connection.go:206: Invalid Connection

рдореИрдВ рдпрд╣рд╛рдВ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдХреЛ рдЧрдВрджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ, рдмрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реВрдВред рдХреНрдпрд╛ рдпрд╣ "рдЕрдорд╛рдиреНрдп рдХрдиреЗрдХреНрд╢рди" рддреНрд░реБрдЯрд┐ рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЕрдирджреЗрдЦреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдкрддрд╛ рдЪрд▓рдиреЗ рдкрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдерд┐рдпрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ?

рдЙрд╣, рдУрд╣ ... рдЕрдм рдЬрдм рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╢реБрдХреНрд░рд╡рд╛рд░ рд╕реЗ @julienschmidt рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред (рдореИрдВ рдЬреВрд▓рд┐рдпрди рд╕реЗ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред) @rmulley , рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдмрддрд╛рдИ рд╣реИ рдЬреЛ рдореИрдВ рдКрдкрд░ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рджреЗрдЦреЗрдВред рдмрдпрд╛рди рдореЗрдВ "рдЕрдорд╛рдиреНрдп рдХрдиреЗрдХреНрд╢рди": 24 рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИред рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдХрдиреЗрдХреНрд╢рди рдЪреБрдирдХрд░ рдЙрдкрдпреБрдХреНрдд рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ "рд╡реНрдпрд╕реНрдд рдмрдлрд░" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ; рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рджреЗрдЦрд╛ рд╣реИред рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХреА рд╣реИ, рддрдм рддрдХ рдХрд╛рдлреА рд╕рдордп рд╣реЛ рдЪреБрдХрд╛ рд╣реИред рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд░рдЦреВрдВрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рддрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдКрдВрдЧрд╛ред

@rmulley : рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдиреЗ go get (рдЬреЛ рдПрдХ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ) рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдкрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╡рд░реНрддрдорд╛рди git рдорд╛рд╕реНрдЯрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдиреНрдпреВрдирддрдо рдХреЛрдб рдирдореВрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ (b *buffer) takeBuffer nil рд░рд┐рдЯрд░реНрдиред рдРрд╕рд╛ рддрднреА рд▓рдЧрддрд╛ рд╣реИ рдЬрдм b.length > 0 ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдмрдлрд░ рдореЗрдВ рдЕрдкрдард┐рдд рдбреЗрдЯрд╛ рд╣реИред
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЗрди рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдЬрдВрдЧрд▓реА рдореЗрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ред

# 206 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд▓реА рдЬрд╛рддреА рд╣реИ рдЬрдм рдЯрд┐рдк рд╕реЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ?

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рджреЗрд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдХрд┐ рдореИрдВ рдЫреБрдЯреНрдЯреА рдкрд░ рдерд╛ рдФрд░ рдлрд┐рд░ рдЕрдиреБрд╡рд░реНрддреА рднреВрд▓ рдЧрдпрд╛ред рдореИрдВрдиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ MySQL рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ рдЕрдм рдЧреЛ 1.3 рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдм рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред

[MySQL] 2014/06/23 11:46:04 packets.go:356: Busy buffer
[MySQL] 2014/06/23 11:46:04 packets.go:73: read tcp xxx.xxx.xxx.xx:3306: connection reset by peer

рдХреНрдпрд╛ рдпрд╣ рдореЗрд░реЗ рдЕрдВрдд рдкрд░ рдПрдХ MySQL рдореБрджреНрджрд╛ рд╣реИ? (рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдСрдирд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧреА рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ)
рдпрд╛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЬрд╛рдВрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ?

рдореИрдВ rmulley рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИред рдЬреЛ рдЕрд▓рдЧ рдерд╛ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ "рд╡реНрдпрд╕реНрдд рдмрдлрд░" рдмреЗрд╣рдж рдХрдо рдХреНрд╡реЗрд░реА (1 рдХреНрд╡реЗрд░реА + 2 рдПрдХреНрдЬрд╝реЗрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдЯрд╛) рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рддреИрдпрд╛рд░ рдХрдердиреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЕрдЧрд░ рдореИрдВрдиреЗ рд▓реЗрди-рджреЗрди рдореЗрдВ рдПрдХ рдмрдпрд╛рди рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдЬреИрд╕реЗ

 stmt, err = tx.Prepare("SELECT ...")

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдПрдХ рдФрд░ рдмрдпрд╛рди рддреИрдпрд╛рд░ рдХрд░реВрдБ, рдпрд╛ рдореБрдЭреЗ рд╣рд░ рдмрд╛рд░ "рд╡реНрдпрд╕реНрдд рдмрдлрд░" рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛, рдореБрдЭреЗ рдЗрд╕ stmt рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдЧрд░ рдореИрдВ рддреИрдпрд╛рд░ рдмрдпрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ tx рдХреА рддрд░рд╣ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

 tx.Query("...")

рдпрд╛

tx.Exec("...")

, рдпрд╣ рдЕрдЪреНрдЫрд╛ рдерд╛ред

рдФрд░, рдЕрдЧрд░ рдореИрдВ рдПрдХ рдмрдпрд╛рди рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЕрдиреНрдп рдХреНрд╡реЗрд░реА рдпрд╛ Exec рдЕрдиреНрдп рд╕рд╛рдорд╛рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рднреА рдареАрдХ рд╣реИ ... рдмрд╕ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдмрдВрдж рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдФрд░ рдмрдпрд╛рди рддреИрдпрд╛рд░ рди рдХрд░реЗрдВ, рдФрд░ рдпрд╣ рдареАрдХ рджрд┐рдЦрддрд╛ рд╣реИред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдЖрдк рд╢рд╛рдпрдж рдПрдХ рдЫреЛрдЯрд╛ рдЧреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЪрд╛рд▓рдХ рдореЗрдВ рдПрдХ рдмрдЧ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдмрддрд╛рдП рдЧрдП рдореВрд▓ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред
рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдПрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ:

package main

import (
    "database/sql"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, _ := sql.Open("mysql", "/")
    defer db.Close()
    tx, err := db.Begin()
    if err != nil {
        panic(err)
    }
    defer tx.Commit()
    stmt1, err := tx.Prepare("SELECT 1")
    if err != nil {
        panic(err)
    }
    rows1, err := stmt1.Query()
    if err != nil {
        panic(err)
    }
    stmt2, err := tx.Prepare("SELECT 2")
    if err != nil {
        // rows1 is not closed -> triggers busy buffer because transaction is on one connection
        // and stmt1, stmt2 use the same one.
        // Move rows1.Close() in front of tx.Prepare and it disappears
        panic(err)
    }
    rows2, err := stmt2.Query()
    if err != nil {
        panic(err)
    }
    rows1.Close()
    rows2.Close()
    stmt1.Close()
    stmt2.Close()
}

рдореИрдВ рдмрд╕ рдПрдХ рд╕рдорд╛рди рд╡реНрдпрд╕реНрдд рдмрдлрд░ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ "Exec" -> рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЖрд╡реЗрд╖рдг рдореЗрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ

var sql = "рдЯреЗрдмрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВ (f1, f2 ... f25) рдорд╛рди (?,? ...?)?"
_, рдЗрд░реЗрдЯ: = db.Exec (sql, ...)

рд▓рдЧрднрдЧ 4000 рдХреЗ рдмрд╛рдж, рдХрднреА-рдХрднреА 5000 рдЖрд╡реЗрд╖рдг рдореБрдЭреЗ "рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдИрдУрдПрдл" рдФрд░ "рд╡реНрдпрд╕реНрдд рдмрдлрд░" рдорд┐рд▓рддреЗ рд╣реИрдВред
рдЖрд╡реЗрд╖рдг рддрдВрдЧ рд╣реИрдВ (рд▓реВрдк рдХреЗ рд▓рд┐рдП) рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмреАрдЪ рдПрдХ рдЖрд░рдИрдПрд╕рдЯреА рдЕрдиреБрд░реЛрдз рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЗрддрдиреА рддреЗрдЬреА рд╕реЗ рдЖрдЧ рдирд╣реАрдВ; рдПрдХ рд╣реА рдХрдиреЗрдХреНрд╢рди рд╕рдВрджрд░реНрднред рдпрд╣ Go 1.3 рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж,
рдирдордХ

@ рд╕реИрд▓ - рдЬрдм рдЖрдк 1.4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

рдмреБрдз рдкрд░, 31 рджрд┐рд╕рдВрдмрд░, 2014 рдХреЛ рдкреНрд░рд╛рддрдГ 10:11 рдмрдЬреЗ, Sal A. Magnone рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдпрд╣ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ
"рдЖрд╡реЗрд╖рдг" -> рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдП рдЧрдП рдЫреЛрдЯреЗ рдЖрд╡реЗрд╖рдг рдореЗрдВ рд╕рдорд╕реНрдпрд╛

var sql = "рдЯреЗрдмрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВ (f1, f2 ... f25) рдорд╛рди (?,? ...?)?"
_, рдЗрд░реЗрдЯ: = db.Exec (sql, ...)

рд▓рдЧрднрдЧ 4000 рдХреЗ рдмрд╛рдж, рдХрднреА-рдХрднреА 5000 рдЖрд╡реЗрд╖рдг рдореБрдЭреЗ "рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд EOF" рдФрд░ "рд╡реНрдпрд╕реНрдд" рдорд┐рд▓рддреЗ рд╣реИрдВ
рдмрдлрд░ "ред
рдЖрд╡реЗрд╖рдг рддрдВрдЧ рд╣реИрдВ (рд▓реВрдк рдХреЗ рд▓рд┐рдП) рд▓реЗрдХрд┐рди рдмреАрдЪ рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рд╣реИ
рдкреНрд░рддреНрдпреЗрдХ, рд╣рд╛рдВ, рдЗрддрдиреА рддреЗрдЬ рдЖрдЧ рдирд╣реАрдВ; рдПрдХ рд╣реА рдХрдиреЗрдХреНрд╢рди рд╕рдВрджрд░реНрднред рдпрд╣ Go 1.3 рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж,
рдирдордХ

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/go-sql-driver/mysql/issues/185#issuecomment -68479413ред

рдЖрдкрдХреЗ рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рез.рек - рд╡рд╣реА рддреНрд░реБрдЯрд┐ред рд▓рдЧрднрдЧ 50 рдорд┐рдирдЯ рдореЗрдВ 4205 рдЖрд╡реЗрд╖рдг рдкрд░ рдорд░ рдЧрдпрд╛ (рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдмреАрдЪ рдиреЗрдЯ рдФрд░ рд╕реНрдХреНрд░реАрди i / o рд╣реИ)ред

рдореИрдВрдиреЗ рдЙрд╕ рдХреЛрдб рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд▓реЗ рд▓рд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЗрд╕реЗ рдЫреЛрдбрд╝рд╛ рдерд╛ред рддреЛ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдиреНрдп рдХреНрд╖реБрдзрд╛ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдПрдХ рд╕рдВрдЪрдпреА рдЕрдиреБрд░реЛрдз рд╕рдорд╕реНрдпрд╛ рд╣реИред

-рд╕рд╛рд▓

рд╕реЗ: рдХрд╛рд░реНрдмреЛрдХреЗрд╢рди [mailto: рд╕реВрдЪрдирд╛рдПрдВ@github.com]
рдкреНрд░реЗрд╖рд┐рдд: рд░рд╡рд┐рд╡рд╛рд░, рек рдЬрдирд╡рд░реА реирежрезрел рд╕реБрдмрд╣ реп: релреж рдмрдЬреЗ
To: go-sql-driver / mysql
Cc: рд╕реИрд▓ рдПред рдореИрдЧреНрдиреЗ
рд╡рд┐рд╖рдп: рдкреБрди: [mysql] рдорд╛рд░реЗ рдЧрдП рдХрдиреЗрдХреНрд╢рди рдкрд░ рдЕрдЬреАрдм рддреНрд░реБрдЯрд┐ (# рез :рел)

@ рд╕реИрд▓ - рдЬрдм рдЖрдк 1.4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

рдмреБрдз 31 рджрд┐рд╕рдВрдмрд░, 2014 рдкрд░ 10:11 pm рдкрд░, рд╕рд╛рд▓ рдП Magnone < [email protected] [email protected] >
рд▓рд┐рдЦрд╛ рдерд╛:

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдпрд╣ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ
"рдЖрд╡реЗрд╖рдг" -> рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдП рдЧрдП рдЫреЛрдЯреЗ рдЖрд╡реЗрд╖рдг рдореЗрдВ рд╕рдорд╕реНрдпрд╛

var sql = "рдЯреЗрдмрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВ (f1, f2 ... f25) рдорд╛рди (?,? ...?)?"
_, рдЗрд░реЗрдЯ: = db.Exec (sql, ...)

рд▓рдЧрднрдЧ 4000 рдХреЗ рдмрд╛рдж, рдХрднреА-рдХрднреА 5000 рдЖрд╡реЗрд╖рдг рдореБрдЭреЗ "рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд EOF" рдФрд░ "рд╡реНрдпрд╕реНрдд" рдорд┐рд▓рддреЗ рд╣реИрдВ
рдмрдлрд░ "ред
рдЖрд╡реЗрд╖рдг рддрдВрдЧ рд╣реИрдВ (рд▓реВрдк рдХреЗ рд▓рд┐рдП) рд▓реЗрдХрд┐рди рдмреАрдЪ рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рд╣реИ
рдкреНрд░рддреНрдпреЗрдХ, рд╣рд╛рдВ, рдЗрддрдиреА рддреЗрдЬ рдЖрдЧ рдирд╣реАрдВ; рдПрдХ рд╣реА рдХрдиреЗрдХреНрд╢рди рд╕рдВрджрд░реНрднред рдпрд╣ Go 1.3 рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж,
рдирдордХ

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/go-sql-driver/mysql/issues/185#issuecomment -68479413ред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub https://github.com/go-sql-driver/mysql/issues/185#issuecomment -68635254 рдкрд░ https://github.com/notifications/beacon/AA4DdvfCFMdiqPlTZITEs9VrxyyJqqFQks5neUqigaJpZM4BSM1b.gif

рдХреНрдпрд╛ рдпрд╣ рдзрд╛рдЧрд╛ рдЕрдм рдХреБрдЫ рдзрд╛рдЧреЛрдВ рдореЗрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рд╕рдмрд╕реЗ рд╣рд╛рд▓ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдирдП рдореБрджреНрджреЗ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ рдПрдХ рдмрдВрдж рд╣реЛ рдЧрдпрд╛?

@xaprb рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рдХреБрдЫ рд╕реВрддреНрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ https://github.com/go-sql-driver/mysql/issues/185#issuecomment -68479413 рд╕реЗ рдПрдХ рдирдП рдЕрдВрдХ рдореЗрдВ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

zhaohui-kevin picture zhaohui-kevin  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pedromorgan picture pedromorgan  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mayurshivakumar picture mayurshivakumar  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dwlnetnl picture dwlnetnl  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lunemec picture lunemec  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ