| // Go MySQL Driver - A MySQL-Driver for Go's database/sql package | |
| // | |
| // Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved. | |
| // | |
| // This Source Code Form is subject to the terms of the Mozilla Public | |
| // License, v. 2.0. If a copy of the MPL was not distributed with this file, | |
| // You can obtain one at http://mozilla.org/MPL/2.0/. | |
| package mysql | |
| import ( | |
| "errors" | |
| "fmt" | |
| "log" | |
| "os" | |
| ) | |
| // Various errors the driver might return. Can change between driver versions. | |
| var ( | |
| ErrInvalidConn = errors.New("invalid connection") | |
| ErrMalformPkt = errors.New("malformed packet") | |
| ErrNoTLS = errors.New("TLS requested but server does not support TLS") | |
| ErrCleartextPassword = errors.New("this user requires clear text authentication. If you still want to use it, please add 'allowCleartextPasswords=1' to your DSN") | |
| ErrNativePassword = errors.New("this user requires mysql native password authentication.") | |
| ErrOldPassword = errors.New("this user requires old password authentication. If you still want to use it, please add 'allowOldPasswords=1' to your DSN. See also https://github.com/go-sql-driver/mysql/wiki/old_passwords") | |
| ErrUnknownPlugin = errors.New("this authentication plugin is not supported") | |
| ErrOldProtocol = errors.New("MySQL server does not support required protocol 41+") | |
| ErrPktSync = errors.New("commands out of sync. You can't run this command now") | |
| ErrPktSyncMul = errors.New("commands out of sync. Did you run multiple statements at once?") | |
| ErrPktTooLarge = errors.New("packet for query is too large. Try adjusting the 'max_allowed_packet' variable on the server") | |
| ErrBusyBuffer = errors.New("busy buffer") | |
| // errBadConnNoWrite is used for connection errors where nothing was sent to the database yet. | |
| // If this happens first in a function starting a database interaction, it should be replaced by driver.ErrBadConn | |
| // to trigger a resend. | |
| // See https://github.com/go-sql-driver/mysql/pull/302 | |
| errBadConnNoWrite = errors.New("bad connection") | |
| ) | |
| var errLog = Logger(log.New(os.Stderr, "[mysql] ", log.Ldate|log.Ltime|log.Lshortfile)) | |
| // Logger is used to log critical error messages. | |
| type Logger interface { | |
| Print(v ...interface{}) | |
| } | |
| // SetLogger is used to set the logger for critical errors. | |
| // The initial logger is os.Stderr. | |
| func SetLogger(logger Logger) error { | |
| if logger == nil { | |
| return errors.New("logger is nil") | |
| } | |
| errLog = logger | |
| return nil | |
| } | |
| // MySQLError is an error type which represents a single MySQL error | |
| type MySQLError struct { | |
| Number uint16 | |
| Message string | |
| } | |
| func (me *MySQLError) Error() string { | |
| return fmt.Sprintf("Error %d: %s", me.Number, me.Message) | |
| } |