рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдпрдорд┐рдд MySQL INT рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдорддреМрд░ рдкрд░ INT UNSIGNED
рд╕рд╛рде рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ 32b рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд int рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореВрд▓ db.sql рдкреИрдХреЗрдЬ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░-рд╡рд┐рдорд░реНрд╢ рдХрд┐рдпрд╛ reddit рдФрд░ рд╣рд░ рдХреЛрдИ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ MySQL рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ (рдмрд╛рдЗрдЯ рд╕рд╛рдЗрдЬ рд╣реИрдВ) рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ db.sql рдкреИрдХреЗрдЬ рдореЗрдВ рдзрдХреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдВрд░рдЪрдирд╛рдПрдВ MySQL рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдХреЛрдИ рдУрд╡рд░рдлреНрд▓реЛ рди рд╣реЛ, рдЬреЛ рдХрд┐ INT UNSIGNED
рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП NullInt64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣реЛрдЧрд╛ред BIGINT UNSIGNED
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рди рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ - рдЬрд┐рд╕рдХрд╛ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп NullInt64 рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
type MyTable struct {
ID uint
}
type MyOtherTable struct {
ID uint
MyTableID mysql.NullUint32 // Nullable relationship with MyTable
}
рдореИрдВ рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдареАрдХ рд╣реЛрдВрдЧреЗред
рдзрдиреНрдпрд╡рд╛рджред
рд╣рдо https://golang.org/pkg/database/sql/driver/#Value рд╕реЗ рдмрдВрдзреЗ рд╣реИрдВ - рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдЗрди рдмрд╛рдзрд╛рдУрдВ рдХреЗ рднреАрддрд░ рдбреЗрдЯрд╛рдмреЗрд╕ / рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред NullTime рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдореЗрдВ рдЧрд╛рдпрдм рдерд╛, рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗред
@arnehormann рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЧреЛ рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдкреИрдХреЗрдЬ rsc
рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рд╕рдорд░реНрдерди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧреЛрд▓рдВрдЧ mysql рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрди рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://github.com/golang/go/issues/9373
рд╣рд╛рдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд▓рд┐рдЦрд╛:
`` `рдРрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП sqlite) рд╣реИрдВ рдЬреЛ рдЗрддрдиреЗ рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕реАрд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рд╣рдо рдЕрдм рдЙрд╕ рдирд┐рд░реНрдгрдп рдХреЛ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рднреА рдореМрдЬреВрджрд╛ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред
рдпрджрд┐ MySQL рдРрд╕реЗ рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ MySQL рдбреНрд░рд╛рдЗрд╡рд░ рдЗрд╕реЗ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ
рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
uint64s рдПрдХ рдХрд╕реНрдЯрдо рдорд╛рди рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВред
рдпрд╣реА рд╣реИ, рдПрдХ MySQL рдбреНрд░рд╛рдЗрд╡рд░ рдЬреЛ рдмрдбрд╝реЗ uint64s рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рд╡рд╣ рдЖрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдореЗрдВ рдХреЛрдИ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
`` `
рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдпрд╣ uint64 рдХреЗ рдмрдЬрд╛рдп uint32 рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ uint64 рдХреЗ рдЬрд▓реНрдж рд╣реА рдХрднреА рднреА рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИред
рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ? рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реВрдВред
рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА uint64 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА uint64 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди NullUint64 рдирд╣реАрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ BIGINT UNSIGNED nullable рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп NullInt64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЖрдкрдиреЗ uint64 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ rsc рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ rsc рдиреЗ рд╕реБрдЭрд╛рдпрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк uint64 рдХреЗ рдмрдЬрд╛рдп NullUint64 рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ rsc рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд╣реЗрдВред рдпрд╣ рд╕рд┐рд░реНрдл рднреНрд░рд╛рдордХ рд╣реИред
рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА uint64 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди NullUint64 рдирд╣реАрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ BIGINT UNSIGNED nullable рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп NullInt64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдпрд╛ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@arnehormann рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЧреЛ рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдкреИрдХреЗрдЬ
rsc
рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рд╕рдорд░реНрдерди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧреЛрд▓рдВрдЧ mysql рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрди рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)редрдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://github.com/golang/go/issues/9373