Table of Contents
This appendix lists common problems and errors that may occur and potential resolutions, in addition to listing the errors that may appear when you call MySQL from any host language. The first section covers problems and resolutions. Detailed information on errors is provided: One list displays server error messages. Another list displays client program messages.
There are several sources of error information in MySQL:
Each SQL statement executed results in an error code, an SQLSTATE value, and an error message, as described in Section B.2, “Types of Error Values”. These errors are returned from the server side; see Section B.3, “Server Error Codes and Messages”.
Errors can occur on the client side, usually involving problems communicating with the server; see Section B.4, “Client Error Codes and Messages”.
SQL statement warning and error information is available
through the SHOW WARNINGS
and
SHOW ERRORS
statements. The
warning_count
system variable
indicates the number of errors, warnings, and notes. The
error_count
system variable
indicates the number of errors. Its value excludes warnings
and notes.
SHOW SLAVE STATUS
statement
output includes information about replication errors occurring
on the slave side.
SHOW ENGINE
INNODB STATUS
statement output includes information
about the most recent foreign key error if a
CREATE TABLE
statement for an
InnoDB
table fails.
The perror program provides information from the command line about error numbers. See Section 4.8.1, “perror — Explain Error Codes”.
Descriptions of server and client errors are provided later in
this Appendix. For information about errors related to
InnoDB
, see
Section 14.21.4, “InnoDB Error Handling”.
When an error occurs in MySQL, the server returns two types of error values:
A MySQL-specific error code. This value is numeric. It is not portable to other database systems.
An SQLSTATE value. The value is a five-character string (for
example, '42S02'
). The values are taken
from ANSI SQL and ODBC and are more standardized.
A message string that provides a textual description of the error is also available.
When an error occurs, the MySQL error code, SQLSTATE value, and message string are available using C API functions:
MySQL error code: Call
mysql_errno()
SQLSTATE value: Call
mysql_sqlstate()
Error message: Call
mysql_error()
For prepared statements, the corresponding error functions are
mysql_stmt_errno()
,
mysql_stmt_sqlstate()
, and
mysql_stmt_error()
. All error
functions are described in Section 23.8, “MySQL C API”.
The number of errors, warnings, and notes for the previous
statement can be obtained by calling
mysql_warning_count()
. See
Section 23.8.7.72, “mysql_warning_count()”.
The first two characters of an SQLSTATE value indicate the error class:
Class = '00'
indicates success.
Class = '01'
indicates a warning.
Class = '02'
indicates “not
found.” This is relevant within the context of cursors
and is used to control what happens when a cursor reaches the
end of a data set. This condition also occurs for
SELECT ... INTO
statements that
retrieve no rows.
var_list
Class > '02'
indicates an exception.
MySQL programs have access to several types of error information when the server returns an error. For example, the mysql client program displays errors using the following format:
shell> SELECT * FROM no_such_table;
ERROR 1146 (42S02): Table 'test.no_such_table' doesn't exist
The message displayed contains three types of information:
A numeric error code (1146
). This number is
MySQL-specific and is not portable to other database systems.
A five-character SQLSTATE value ('42S02'
).
The values are taken from ANSI SQL and ODBC and are more
standardized. Not all MySQL error numbers have corresponding
SQLSTATE values. In these cases, 'HY000'
(general error) is used.
A message string that provides a textual description of the error.
For error checking, use error codes, not error messages. Error messages do not change often, but it is possible. Also if the database administrator changes the language setting, that affects the language of error messages.
Error codes are stable across GA releases of a given MySQL series. Before a series reaches GA status, new codes may still be under development and subject to change.
Server error information comes from the following source files. For details about the way that error information is defined, see the MySQL Internals Manual.
Error message information is listed in the
share/errmsg.txt
file.
%d
and %s
represent
numbers and strings, respectively, that are substituted into
the Message values when they are displayed.
The Error values listed in
share/errmsg.txt
are used to generate the
definitions in the include/mysqld_error.h
and include/mysqld_ername.h
MySQL source
files.
The SQLSTATE values listed in
share/errmsg.txt
are used to generate the
definitions in the include/sql_state.h
MySQL source file.
Because updates are frequent, it is possible that those files will contain additional error information not listed here.
Error: 1000
SQLSTATE: HY000
(ER_HASHCHK
)
Message: hashchk
Unused.
Error: 1001
SQLSTATE: HY000
(ER_NISAMCHK
)
Message: isamchk
Unused.
Error: 1002
SQLSTATE: HY000
(ER_NO
)
Message: NO
Used in the construction of other messages.
Error: 1003
SQLSTATE: HY000
(ER_YES
)
Message: YES
Used in the construction of other messages.
Extended EXPLAIN
format generates
Note messages. ER_YES
is used in
the Code
column for these messages in
subsequent SHOW WARNINGS
output.
Error: 1004
SQLSTATE: HY000
(ER_CANT_CREATE_FILE
)
Message: Can't create file '%s' (errno: %d)
Occurs for failure to copy an .frm
file to a
new location, during execution of a CREATE TABLE
statement when the server
tries to copy the source table dst
LIKE
src
.frm
file to
the destination table .frm
file.
Possible causes: Permissions problem for source
.frm
file; destination
.frm
file already exists but is not
writeable.
Error: 1005
SQLSTATE: HY000
(ER_CANT_CREATE_TABLE
)
Message: Can't create table '%s' (errno: %d)
InnoDB
reports this error when a table cannot
be created. If the error message refers to error 150, table
creation failed because a
foreign key
constraint was not correctly formed. If the error message
refers to error −1, table creation probably failed because
the table includes a column name that matched the name of an
internal InnoDB
table.
Error: 1006
SQLSTATE: HY000
(ER_CANT_CREATE_DB
)
Message: Can't create database '%s' (errno: %d)
Error: 1007
SQLSTATE: HY000
(ER_DB_CREATE_EXISTS
)
Message: Can't create database '%s'; database exists
An attempt to create a database failed because the database already exists.
Drop the database first if you really want to replace an existing
database, or add an IF NOT EXISTS
clause to the
CREATE DATABASE
statement if to
retain an existing database without having the statement produce
an error.
Error: 1008
SQLSTATE: HY000
(ER_DB_DROP_EXISTS
)
Message: Can't drop database '%s'; database doesn't exist
Error: 1009
SQLSTATE: HY000
(ER_DB_DROP_DELETE
)
Message: Error dropping database (can't delete '%s', errno: %d)
Error: 1010
SQLSTATE: HY000
(ER_DB_DROP_RMDIR
)
Message: Error dropping database (can't rmdir '%s', errno: %d)
Error: 1011
SQLSTATE: HY000
(ER_CANT_DELETE_FILE
)
Message: Error on delete of '%s' (errno: %d)
Error: 1012
SQLSTATE: HY000
(ER_CANT_FIND_SYSTEM_REC
)
Message: Can't read record in system table
Returned by InnoDB
for attempts to access
InnoDB
INFORMATION_SCHEMA
tables when InnoDB
is unavailable.
Error: 1013
SQLSTATE: HY000
(ER_CANT_GET_STAT
)
Message: Can't get status of '%s' (errno: %d)
Error: 1014
SQLSTATE: HY000
(ER_CANT_GET_WD
)
Message: Can't get working directory (errno: %d)
Error: 1015
SQLSTATE: HY000
(ER_CANT_LOCK
)
Message: Can't lock file (errno: %d)
Error: 1016
SQLSTATE: HY000
(ER_CANT_OPEN_FILE
)
Message: Can't open file: '%s' (errno: %d)
InnoDB
reports this error when the table from
the InnoDB
data
files cannot be found, even though the
.frm
file for the table exists. See
Section 14.21.3, “Troubleshooting InnoDB Data Dictionary Operations”.
Error: 1017
SQLSTATE: HY000
(ER_FILE_NOT_FOUND
)
Message: Can't find file: '%s' (errno: %d)
Error: 1018
SQLSTATE: HY000
(ER_CANT_READ_DIR
)
Message: Can't read dir of '%s' (errno: %d)
Error: 1019
SQLSTATE: HY000
(ER_CANT_SET_WD
)
Message: Can't change dir to '%s' (errno: %d)
Error: 1020
SQLSTATE: HY000
(ER_CHECKREAD
)
Message: Record has changed since last read in table '%s'
Error: 1021
SQLSTATE: HY000
(ER_DISK_FULL
)
Message: Disk full (%s); waiting for someone to free some space...
Error: 1022
SQLSTATE: 23000
(ER_DUP_KEY
)
Message: Can't write; duplicate key in table '%s'
Error: 1023
SQLSTATE: HY000
(ER_ERROR_ON_CLOSE
)
Message: Error on close of '%s' (errno: %d)
Error: 1024
SQLSTATE: HY000
(ER_ERROR_ON_READ
)
Message: Error reading file '%s' (errno: %d)
Error: 1025
SQLSTATE: HY000
(ER_ERROR_ON_RENAME
)
Message: Error on rename of '%s' to '%s' (errno: %d)
InnoDB
reports this error if you attempt to
drop the last index that can enforce a particular referential
constraint. As of MySQL 5.5, this error message is replaced by
ERROR 1553
.
Error: 1026
SQLSTATE: HY000
(ER_ERROR_ON_WRITE
)
Message: Error writing file '%s' (errno: %d)
Error: 1027
SQLSTATE: HY000
(ER_FILE_USED
)
Message: '%s' is locked against change
Error: 1028
SQLSTATE: HY000
(ER_FILSORT_ABORT
)
Message: Sort aborted
Error: 1029
SQLSTATE: HY000
(ER_FORM_NOT_FOUND
)
Message: View '%s' doesn't exist for '%s'
Error: 1030
SQLSTATE: HY000
(ER_GET_ERRNO
)
Message: Got error %d from storage engine
Check the %d
value to see what the OS error
means. For example, 28 indicates that you have run out of disk
space.
Error: 1031
SQLSTATE: HY000
(ER_ILLEGAL_HA
)
Message: Table storage engine for '%s' doesn't have this option
Error: 1032
SQLSTATE: HY000
(ER_KEY_NOT_FOUND
)
Message: Can't find record in '%s'
Error: 1033
SQLSTATE: HY000
(ER_NOT_FORM_FILE
)
Message: Incorrect information in file: '%s'
Error: 1034
SQLSTATE: HY000
(ER_NOT_KEYFILE
)
Message: Incorrect key file for table '%s'; try to repair it
Error: 1035
SQLSTATE: HY000
(ER_OLD_KEYFILE
)
Message: Old key file for table '%s'; repair it!
Error: 1036
SQLSTATE: HY000
(ER_OPEN_AS_READONLY
)
Message: Table '%s' is read only
Error: 1037
SQLSTATE: HY001
(ER_OUTOFMEMORY
)
Message: Out of memory; restart server and try again (needed %d bytes)
Error: 1038
SQLSTATE: HY001
(ER_OUT_OF_SORTMEMORY
)
Message: Out of sort memory, consider increasing server sort buffer size
Error: 1039
SQLSTATE: HY000
(ER_UNEXPECTED_EOF
)
Message: Unexpected EOF found when reading file '%s' (errno: %d)
Error: 1040
SQLSTATE: 08004
(ER_CON_COUNT_ERROR
)
Message: Too many connections
Error: 1041
SQLSTATE: HY000
(ER_OUT_OF_RESOURCES
)
Message: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
Error: 1042
SQLSTATE: 08S01
(ER_BAD_HOST_ERROR
)
Message: Can't get hostname for your address
Error: 1043
SQLSTATE: 08S01
(ER_HANDSHAKE_ERROR
)
Message: Bad handshake
Error: 1044
SQLSTATE: 42000
(ER_DBACCESS_DENIED_ERROR
)
Message: Access denied for user '%s'@'%s' to database '%s'
Error: 1045
SQLSTATE: 28000
(ER_ACCESS_DENIED_ERROR
)
Message: Access denied for user '%s'@'%s' (using password: %s)
Error: 1046
SQLSTATE: 3D000
(ER_NO_DB_ERROR
)
Message: No database selected
Error: 1047
SQLSTATE: 08S01
(ER_UNKNOWN_COM_ERROR
)
Message: Unknown command
Error: 1048
SQLSTATE: 23000
(ER_BAD_NULL_ERROR
)
Message: Column '%s' cannot be null
Error: 1049
SQLSTATE: 42000
(ER_BAD_DB_ERROR
)
Message: Unknown database '%s'
Error: 1050
SQLSTATE: 42S01
(ER_TABLE_EXISTS_ERROR
)
Message: Table '%s' already exists
Error: 1051
SQLSTATE: 42S02
(ER_BAD_TABLE_ERROR
)
Message: Unknown table '%s'
Error: 1052
SQLSTATE: 23000
(ER_NON_UNIQ_ERROR
)
Message: Column '%s' in %s is ambiguous
%s = column name %s = location of column (for example, "field list")
Likely cause: A column appears in a query without appropriate qualification, such as in a select list or ON clause.
Examples:
mysql>SELECT i FROM t INNER JOIN t AS t2;
ERROR 1052 (23000): Column 'i' in field list is ambiguous mysql>SELECT * FROM t LEFT JOIN t AS t2 ON i = i;
ERROR 1052 (23000): Column 'i' in on clause is ambiguous
Resolution:
Qualify the column with the appropriate table name:
mysql> SELECT t2.i FROM t INNER JOIN t AS t2;
Modify the query to avoid the need for qualification:
mysql> SELECT * FROM t LEFT JOIN t AS t2 USING (i);
Error: 1053
SQLSTATE: 08S01
(ER_SERVER_SHUTDOWN
)
Message: Server shutdown in progress
Error: 1054
SQLSTATE: 42S22
(ER_BAD_FIELD_ERROR
)
Message: Unknown column '%s' in '%s'
Error: 1055
SQLSTATE: 42000
(ER_WRONG_FIELD_WITH_GROUP
)
Message: '%s' isn't in GROUP BY
Error: 1056
SQLSTATE: 42000
(ER_WRONG_GROUP_FIELD
)
Message: Can't group on '%s'
Error: 1057
SQLSTATE: 42000
(ER_WRONG_SUM_SELECT
)
Message: Statement has sum functions and columns in same statement
Error: 1058
SQLSTATE: 21S01
(ER_WRONG_VALUE_COUNT
)
Message: Column count doesn't match value count
Error: 1059
SQLSTATE: 42000
(ER_TOO_LONG_IDENT
)
Message: Identifier name '%s' is too long
Error: 1060
SQLSTATE: 42S21
(ER_DUP_FIELDNAME
)
Message: Duplicate column name '%s'
Error: 1061
SQLSTATE: 42000
(ER_DUP_KEYNAME
)
Message: Duplicate key name '%s'
Error: 1062
SQLSTATE: 23000
(ER_DUP_ENTRY
)
Message: Duplicate entry '%s' for key %d
The message returned with this error uses the format string for
ER_DUP_ENTRY_WITH_KEY_NAME
.
Error: 1063
SQLSTATE: 42000
(ER_WRONG_FIELD_SPEC
)
Message: Incorrect column specifier for column '%s'
Error: 1064
SQLSTATE: 42000
(ER_PARSE_ERROR
)
Message: %s near '%s' at line %d
Error: 1065
SQLSTATE: 42000
(ER_EMPTY_QUERY
)
Message: Query was empty
Error: 1066
SQLSTATE: 42000
(ER_NONUNIQ_TABLE
)
Message: Not unique table/alias: '%s'
Error: 1067
SQLSTATE: 42000
(ER_INVALID_DEFAULT
)
Message: Invalid default value for '%s'
Error: 1068
SQLSTATE: 42000
(ER_MULTIPLE_PRI_KEY
)
Message: Multiple primary key defined
Error: 1069
SQLSTATE: 42000
(ER_TOO_MANY_KEYS
)
Message: Too many keys specified; max %d keys allowed
Error: 1070
SQLSTATE: 42000
(ER_TOO_MANY_KEY_PARTS
)
Message: Too many key parts specified; max %d parts allowed
Error: 1071
SQLSTATE: 42000
(ER_TOO_LONG_KEY
)
Message: Specified key was too long; max key length is %d bytes
Error: 1072
SQLSTATE: 42000
(ER_KEY_COLUMN_DOES_NOT_EXITS
)
Message: Key column '%s' doesn't exist in table
Error: 1073
SQLSTATE: 42000
(ER_BLOB_USED_AS_KEY
)
Message: BLOB column '%s' can't be used in key specification with the used table type
Error: 1074
SQLSTATE: 42000
(ER_TOO_BIG_FIELDLENGTH
)
Message: Column length too big for column '%s' (max = %lu); use BLOB or TEXT instead
Error: 1075
SQLSTATE: 42000
(ER_WRONG_AUTO_KEY
)
Message: Incorrect table definition; there can be only one auto column and it must be defined as a key
Error: 1076
SQLSTATE: HY000
(ER_READY
)
Message: %s: ready for connections. Version: '%s' socket: '%s' port: %d
Error: 1077
SQLSTATE: HY000
(ER_NORMAL_SHUTDOWN
)
Message: %s: Normal shutdown
Error: 1078
SQLSTATE: HY000
(ER_GOT_SIGNAL
)
Message: %s: Got signal %d. Aborting!
Error: 1079
SQLSTATE: HY000
(ER_SHUTDOWN_COMPLETE
)
Message: %s: Shutdown complete
Error: 1080
SQLSTATE: 08S01
(ER_FORCING_CLOSE
)
Message: %s: Forcing close of thread %ld user: '%s'
Error: 1081
SQLSTATE: 08S01
(ER_IPSOCK_ERROR
)
Message: Can't create IP socket
Error: 1082
SQLSTATE: 42S12
(ER_NO_SUCH_INDEX
)
Message: Table '%s' has no index like the one used in CREATE INDEX; recreate the table
Error: 1083
SQLSTATE: 42000
(ER_WRONG_FIELD_TERMINATORS
)
Message: Field separator argument is not what is expected; check the manual
Error: 1084
SQLSTATE: 42000
(ER_BLOBS_AND_NO_TERMINATED
)
Message: You can't use fixed rowlength with BLOBs; please use 'fields terminated by'
Error: 1085
SQLSTATE: HY000
(ER_TEXTFILE_NOT_READABLE
)
Message: The file '%s' must be in the database directory or be readable by all
Error: 1086
SQLSTATE: HY000
(ER_FILE_EXISTS_ERROR
)
Message: File '%s' already exists
Error: 1087
SQLSTATE: HY000
(ER_LOAD_INFO
)
Message: Records: %ld Deleted: %ld Skipped: %ld Warnings: %ld
Error: 1088
SQLSTATE: HY000
(ER_ALTER_INFO
)
Message: Records: %ld Duplicates: %ld
Error: 1089
SQLSTATE: HY000
(ER_WRONG_SUB_KEY
)
Message: Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys
Error: 1090
SQLSTATE: 42000
(ER_CANT_REMOVE_ALL_FIELDS
)
Message: You can't delete all columns with ALTER TABLE; use DROP TABLE instead
Error: 1091
SQLSTATE: 42000
(ER_CANT_DROP_FIELD_OR_KEY
)
Message: Can't DROP '%s'; check that column/key exists
Error: 1092
SQLSTATE: HY000
(ER_INSERT_INFO
)
Message: Records: %ld Duplicates: %ld Warnings: %ld
Error: 1093
SQLSTATE: HY000
(ER_UPDATE_TABLE_USED
)
Message: You can't specify target table '%s' for update in FROM clause
Error: 1094
SQLSTATE: HY000
(ER_NO_SUCH_THREAD
)
Message: Unknown thread id: %lu
Error: 1095
SQLSTATE: HY000
(ER_KILL_DENIED_ERROR
)
Message: You are not owner of thread %lu
Error: 1096
SQLSTATE: HY000
(ER_NO_TABLES_USED
)
Message: No tables used
Error: 1097
SQLSTATE: HY000
(ER_TOO_BIG_SET
)
Message: Too many strings for column %s and SET
Error: 1098
SQLSTATE: HY000
(ER_NO_UNIQUE_LOGFILE
)
Message: Can't generate a unique log-filename %s.(1-999)
Error: 1099
SQLSTATE: HY000
(ER_TABLE_NOT_LOCKED_FOR_WRITE
)
Message: Table '%s' was locked with a READ lock and can't be updated
Error: 1100
SQLSTATE: HY000
(ER_TABLE_NOT_LOCKED
)
Message: Table '%s' was not locked with LOCK TABLES
Error: 1101
SQLSTATE: 42000
(ER_BLOB_CANT_HAVE_DEFAULT
)
Message: BLOB/TEXT column '%s' can't have a default value
Error: 1102
SQLSTATE: 42000
(ER_WRONG_DB_NAME
)
Message: Incorrect database name '%s'
Error: 1103
SQLSTATE: 42000
(ER_WRONG_TABLE_NAME
)
Message: Incorrect table name '%s'
Error: 1104
SQLSTATE: 42000
(ER_TOO_BIG_SELECT
)
Message: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay
Error: 1105
SQLSTATE: HY000
(ER_UNKNOWN_ERROR
)
Message: Unknown error
Error: 1106
SQLSTATE: 42000
(ER_UNKNOWN_PROCEDURE
)
Message: Unknown procedure '%s'
Error: 1107
SQLSTATE: 42000
(ER_WRONG_PARAMCOUNT_TO_PROCEDURE
)
Message: Incorrect parameter count to procedure '%s'
Error: 1108
SQLSTATE: HY000
(ER_WRONG_PARAMETERS_TO_PROCEDURE
)
Message: Incorrect parameters to procedure '%s'
Error: 1109
SQLSTATE: 42S02
(ER_UNKNOWN_TABLE
)
Message: Unknown table '%s' in %s
Error: 1110
SQLSTATE: 42000
(ER_FIELD_SPECIFIED_TWICE
)
Message: Column '%s' specified twice
Error: 1111
SQLSTATE: HY000
(ER_INVALID_GROUP_FUNC_USE
)
Message: Invalid use of group function
Error: 1112
SQLSTATE: 42000
(ER_UNSUPPORTED_EXTENSION
)
Message: Table '%s' uses an extension that doesn't exist in this MySQL version
Error: 1113
SQLSTATE: 42000
(ER_TABLE_MUST_HAVE_COLUMNS
)
Message: A table must have at least 1 column
Error: 1114
SQLSTATE: HY000
(ER_RECORD_FILE_FULL
)
Message: The table '%s' is full
InnoDB
reports this error when the system
tablespace runs out of free space. Reconfigure the system
tablespace to add a new data file.
Error: 1115
SQLSTATE: 42000
(ER_UNKNOWN_CHARACTER_SET
)
Message: Unknown character set: '%s'
Error: 1116
SQLSTATE: HY000
(ER_TOO_MANY_TABLES
)
Message: Too many tables; MySQL can only use %d tables in a join
Error: 1117
SQLSTATE: HY000
(ER_TOO_MANY_FIELDS
)
Message: Too many columns
Error: 1118
SQLSTATE: 42000
(ER_TOO_BIG_ROWSIZE
)
Message: Row size too large. The maximum row size for the used table type, not counting BLOBs, is %ld. You have to change some columns to TEXT or BLOBs
Error: 1119
SQLSTATE: HY000
(ER_STACK_OVERRUN
)
Message: Thread stack overrun: Used: %ld of a %ld stack. Use 'mysqld --thread_stack=#' to specify a bigger stack if needed
Error: 1120
SQLSTATE: 42000
(ER_WRONG_OUTER_JOIN
)
Message: Cross dependency found in OUTER JOIN; examine your ON conditions
Error: 1121
SQLSTATE: 42000
(ER_NULL_COLUMN_IN_INDEX
)
Message: Table handler doesn't support NULL in given index. Please change column '%s' to be NOT NULL or use another handler
Error: 1122
SQLSTATE: HY000
(ER_CANT_FIND_UDF
)
Message: Can't load function '%s'
Error: 1123
SQLSTATE: HY000
(ER_CANT_INITIALIZE_UDF
)
Message: Can't initialize function '%s'; %s
Error: 1124
SQLSTATE: HY000
(ER_UDF_NO_PATHS
)
Message: No paths allowed for shared library
Error: 1125
SQLSTATE: HY000
(ER_UDF_EXISTS
)
Message: Function '%s' already exists
Error: 1126
SQLSTATE: HY000
(ER_CANT_OPEN_LIBRARY
)
Message: Can't open shared library '%s' (errno: %d %s)
Error: 1127
SQLSTATE: HY000
(ER_CANT_FIND_DL_ENTRY
)
Message: Can't find symbol '%s' in library
Error: 1128
SQLSTATE: HY000
(ER_FUNCTION_NOT_DEFINED
)
Message: Function '%s' is not defined
Error: 1129
SQLSTATE: HY000
(ER_HOST_IS_BLOCKED
)
Message: Host '%s' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
Error: 1130
SQLSTATE: HY000
(ER_HOST_NOT_PRIVILEGED
)
Message: Host '%s' is not allowed to connect to this MySQL server
Error: 1131
SQLSTATE: 42000
(ER_PASSWORD_ANONYMOUS_USER
)
Message: You are using MySQL as an anonymous user and anonymous users are not allowed to change passwords
Error: 1132
SQLSTATE: 42000
(ER_PASSWORD_NOT_ALLOWED
)
Message: You must have privileges to update tables in the mysql database to be able to change passwords for others
Error: 1133
SQLSTATE: 42000
(ER_PASSWORD_NO_MATCH
)
Message: Can't find any matching row in the user table
Error: 1134
SQLSTATE: HY000
(ER_UPDATE_INFO
)
Message: Rows matched: %ld Changed: %ld Warnings: %ld
Error: 1135
SQLSTATE: HY000
(ER_CANT_CREATE_THREAD
)
Message: Can't create a new thread (errno %d); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug
Error: 1136
SQLSTATE: 21S01
(ER_WRONG_VALUE_COUNT_ON_ROW
)
Message: Column count doesn't match value count at row %ld
Error: 1137
SQLSTATE: HY000
(ER_CANT_REOPEN_TABLE
)
Message: Can't reopen table: '%s'
Error: 1138
SQLSTATE: 22004
(ER_INVALID_USE_OF_NULL
)
Message: Invalid use of NULL value
Error: 1139
SQLSTATE: 42000
(ER_REGEXP_ERROR
)
Message: Got error '%s' from regexp
Error: 1140
SQLSTATE: 42000
(ER_MIX_OF_GROUP_FUNC_AND_FIELDS
)
Message: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Error: 1141
SQLSTATE: 42000
(ER_NONEXISTING_GRANT
)
Message: There is no such grant defined for user '%s' on host '%s'
Error: 1142
SQLSTATE: 42000
(ER_TABLEACCESS_DENIED_ERROR
)
Message: %s command denied to user '%s'@'%s' for table '%s'
Error: 1143
SQLSTATE: 42000
(ER_COLUMNACCESS_DENIED_ERROR
)
Message: %s command denied to user '%s'@'%s' for column '%s' in table '%s'
Error: 1144
SQLSTATE: 42000
(ER_ILLEGAL_GRANT_FOR_TABLE
)
Message: Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used
Error: 1145
SQLSTATE: 42000
(ER_GRANT_WRONG_HOST_OR_USER
)
Message: The host or user argument to GRANT is too long
Error: 1146
SQLSTATE: 42S02
(ER_NO_SUCH_TABLE
)
Message: Table '%s.%s' doesn't exist
Error: 1147
SQLSTATE: 42000
(ER_NONEXISTING_TABLE_GRANT
)
Message: There is no such grant defined for user '%s' on host '%s' on table '%s'
Error: 1148
SQLSTATE: 42000
(ER_NOT_ALLOWED_COMMAND
)
Message: The used command is not allowed with this MySQL version
Error: 1149
SQLSTATE: 42000
(ER_SYNTAX_ERROR
)
Message: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
Error: 1150
SQLSTATE: HY000
(ER_DELAYED_CANT_CHANGE_LOCK
)
Message: Delayed insert thread couldn't get requested lock for table %s
Error: 1151
SQLSTATE: HY000
(ER_TOO_MANY_DELAYED_THREADS
)
Message: Too many delayed threads in use
Error: 1152
SQLSTATE: 08S01
(ER_ABORTING_CONNECTION
)
Message: Aborted connection %ld to db: '%s' user: '%s' (%s)
Error: 1153
SQLSTATE: 08S01
(ER_NET_PACKET_TOO_LARGE
)
Message: Got a packet bigger than 'max_allowed_packet' bytes
Error: 1154
SQLSTATE: 08S01
(ER_NET_READ_ERROR_FROM_PIPE
)
Message: Got a read error from the connection pipe
Error: 1155
SQLSTATE: 08S01
(ER_NET_FCNTL_ERROR
)
Message: Got an error from fcntl()
Error: 1156
SQLSTATE: 08S01
(ER_NET_PACKETS_OUT_OF_ORDER
)
Message: Got packets out of order
Error: 1157
SQLSTATE: 08S01
(ER_NET_UNCOMPRESS_ERROR
)
Message: Couldn't uncompress communication packet
Error: 1158
SQLSTATE: 08S01
(ER_NET_READ_ERROR
)
Message: Got an error reading communication packets
Error: 1159
SQLSTATE: 08S01
(ER_NET_READ_INTERRUPTED
)
Message: Got timeout reading communication packets
Error: 1160
SQLSTATE: 08S01
(ER_NET_ERROR_ON_WRITE
)
Message: Got an error writing communication packets
Error: 1161
SQLSTATE: 08S01
(ER_NET_WRITE_INTERRUPTED
)
Message: Got timeout writing communication packets
Error: 1162
SQLSTATE: 42000
(ER_TOO_LONG_STRING
)
Message: Result string is longer than 'max_allowed_packet' bytes
Error: 1163
SQLSTATE: 42000
(ER_TABLE_CANT_HANDLE_BLOB
)
Message: The used table type doesn't support BLOB/TEXT columns
Error: 1164
SQLSTATE: 42000
(ER_TABLE_CANT_HANDLE_AUTO_INCREMENT
)
Message: The used table type doesn't support AUTO_INCREMENT columns
Error: 1165
SQLSTATE: HY000
(ER_DELAYED_INSERT_TABLE_LOCKED
)
Message: INSERT DELAYED can't be used with table '%s' because it is locked with LOCK TABLES
Error: 1166
SQLSTATE: 42000
(ER_WRONG_COLUMN_NAME
)
Message: Incorrect column name '%s'
Error: 1167
SQLSTATE: 42000
(ER_WRONG_KEY_COLUMN
)
Message: The used storage engine can't index column '%s'
Error: 1168
SQLSTATE: HY000
(ER_WRONG_MRG_TABLE
)
Message: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
Error: 1169
SQLSTATE: 23000
(ER_DUP_UNIQUE
)
Message: Can't write, because of unique constraint, to table '%s'
Error: 1170
SQLSTATE: 42000
(ER_BLOB_KEY_WITHOUT_LENGTH
)
Message: BLOB/TEXT column '%s' used in key specification without a key length
Error: 1171
SQLSTATE: 42000
(ER_PRIMARY_CANT_HAVE_NULL
)
Message: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead
Error: 1172
SQLSTATE: 42000
(ER_TOO_MANY_ROWS
)
Message: Result consisted of more than one row
Error: 1173
SQLSTATE: 42000
(ER_REQUIRES_PRIMARY_KEY
)
Message: This table type requires a primary key
InnoDB
reports this error when you attempt to
drop an implicit clustered
index (the first UNIQUE NOT NULL
index)
if the table did not contain a PRIMARY KEY.
InnoDB
should no longer report this error as of
MySQL 5.5. For tables without an explicit PRIMARY
KEY
, InnoDB
creates an implicit
clustered index using the first columns of the table that are
declared UNIQUE
and NOT
NULL
. When you drop such an index,
InnoDB
now automatically copies the table and
rebuilds the index using a different UNIQUE NOT
NULL
group of columns or a system-generated key. Since
this operation changes the primary key, it uses the slow method of
copying the table and re-creating the index, rather than the Fast
Index Creation technique from
Section 14.14.3, “Implementation Details of Fast Index Creation”.
Error: 1174
SQLSTATE: HY000
(ER_NO_RAID_COMPILED
)
Message: This version of MySQL is not compiled with RAID support
Error: 1175
SQLSTATE: HY000
(ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
)
Message: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
Error: 1176
SQLSTATE: 42000
(ER_KEY_DOES_NOT_EXITS
)
Message: Key '%s' doesn't exist in table '%s'
Error: 1177
SQLSTATE: 42000
(ER_CHECK_NO_SUCH_TABLE
)
Message: Can't open table
Error: 1178
SQLSTATE: 42000
(ER_CHECK_NOT_IMPLEMENTED
)
Message: The storage engine for the table doesn't support %s
Error: 1179
SQLSTATE: 25000
(ER_CANT_DO_THIS_DURING_AN_TRANSACTION
)
Message: You are not allowed to execute this command in a transaction
Error: 1180
SQLSTATE: HY000
(ER_ERROR_DURING_COMMIT
)
Message: Got error %d during COMMIT
Error: 1181
SQLSTATE: HY000
(ER_ERROR_DURING_ROLLBACK
)
Message: Got error %d during ROLLBACK
Error: 1182
SQLSTATE: HY000
(ER_ERROR_DURING_FLUSH_LOGS
)
Message: Got error %d during FLUSH_LOGS
Error: 1183
SQLSTATE: HY000
(ER_ERROR_DURING_CHECKPOINT
)
Message: Got error %d during CHECKPOINT
Error: 1184
SQLSTATE: 08S01
(ER_NEW_ABORTING_CONNECTION
)
Message: Aborted connection %ld to db: '%s' user: '%s' host: '%s' (%s)
Error: 1185
SQLSTATE: HY000
(ER_DUMP_NOT_IMPLEMENTED
)
Message: The storage engine for the table does not support binary table dump
Error: 1186
SQLSTATE: HY000
(ER_FLUSH_MASTER_BINLOG_CLOSED
)
Message: Binlog closed, cannot RESET MASTER
Error: 1187
SQLSTATE: HY000
(ER_INDEX_REBUILD
)
Message: Failed rebuilding the index of dumped table '%s'
Error: 1188
SQLSTATE: HY000
(ER_MASTER
)
Message: Error from master: '%s'
Error: 1189
SQLSTATE: 08S01
(ER_MASTER_NET_READ
)
Message: Net error reading from master
Error: 1190
SQLSTATE: 08S01
(ER_MASTER_NET_WRITE
)
Message: Net error writing to master
Error: 1191
SQLSTATE: HY000
(ER_FT_MATCHING_KEY_NOT_FOUND
)
Message: Can't find FULLTEXT index matching the column list
Error: 1192
SQLSTATE: HY000
(ER_LOCK_OR_ACTIVE_TRANSACTION
)
Message: Can't execute the given command because you have active locked tables or an active transaction
Error: 1193
SQLSTATE: HY000
(ER_UNKNOWN_SYSTEM_VARIABLE
)
Message: Unknown system variable '%s'
Error: 1194
SQLSTATE: HY000
(ER_CRASHED_ON_USAGE
)
Message: Table '%s' is marked as crashed and should be repaired
Error: 1195
SQLSTATE: HY000
(ER_CRASHED_ON_REPAIR
)
Message: Table '%s' is marked as crashed and last (automatic?) repair failed
Error: 1196
SQLSTATE: HY000
(ER_WARNING_NOT_COMPLETE_ROLLBACK
)
Message: Some non-transactional changed tables couldn't be rolled back
Error: 1197
SQLSTATE: HY000
(ER_TRANS_CACHE_FULL
)
Message: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again
Error: 1198
SQLSTATE: HY000
(ER_SLAVE_MUST_STOP
)
Message: This operation cannot be performed with a running slave; run STOP SLAVE first
Error: 1199
SQLSTATE: HY000
(ER_SLAVE_NOT_RUNNING
)
Message: This operation requires a running slave; configure slave and do START SLAVE
Error: 1200
SQLSTATE: HY000
(ER_BAD_SLAVE
)
Message: The server is not configured as slave; fix in config file or with CHANGE MASTER TO
Error: 1201
SQLSTATE: HY000
(ER_MASTER_INFO
)
Message: Could not initialize master info structure; more error messages can be found in the MySQL error log
Error: 1202
SQLSTATE: HY000
(ER_SLAVE_THREAD
)
Message: Could not create slave thread; check system resources
Error: 1203
SQLSTATE: 42000
(ER_TOO_MANY_USER_CONNECTIONS
)
Message: User %s already has more than 'max_user_connections' active connections
Error: 1204
SQLSTATE: HY000
(ER_SET_CONSTANTS_ONLY
)
Message: You may only use constant expressions with SET
Error: 1205
SQLSTATE: HY000
(ER_LOCK_WAIT_TIMEOUT
)
Message: Lock wait timeout exceeded; try restarting transaction
InnoDB
reports this error when lock wait
timeout expires. The statement that waited too long was
rolled back (not the entire
transaction). You can
increase the value of the
innodb_lock_wait_timeout
configuration option if SQL statements should wait longer for
other transactions to complete, or decrease it if too many
long-running transactions are causing
locking problems and reducing
concurrency on a busy
system.
Error: 1206
SQLSTATE: HY000
(ER_LOCK_TABLE_FULL
)
Message: The total number of locks exceeds the lock table size
InnoDB
reports this error when the total number
of locks exceeds the amount of memory devoted to managing locks.
To avoid this error, increase the value of
innodb_buffer_pool_size
. Within
an individual application, a workaround may be to break a large
operation into smaller pieces. For example, if the error occurs
for a large INSERT
, perform several
smaller INSERT
operations.
Error: 1207
SQLSTATE: 25000
(ER_READ_ONLY_TRANSACTION
)
Message: Update locks cannot be acquired during a READ UNCOMMITTED transaction
Error: 1208
SQLSTATE: HY000
(ER_DROP_DB_WITH_READ_LOCK
)
Message: DROP DATABASE not allowed while thread is holding global read lock
Error: 1209
SQLSTATE: HY000
(ER_CREATE_DB_WITH_READ_LOCK
)
Message: CREATE DATABASE not allowed while thread is holding global read lock
Error: 1210
SQLSTATE: HY000
(ER_WRONG_ARGUMENTS
)
Message: Incorrect arguments to %s
Error: 1211
SQLSTATE: 42000
(ER_NO_PERMISSION_TO_CREATE_USER
)
Message: '%s'@'%s' is not allowed to create new users
Error: 1212
SQLSTATE: HY000
(ER_UNION_TABLES_IN_DIFFERENT_DIR
)
Message: Incorrect table definition; all MERGE tables must be in the same database
Error: 1213
SQLSTATE: 40001
(ER_LOCK_DEADLOCK
)
Message: Deadlock found when trying to get lock; try restarting transaction
InnoDB
reports this error when a
transaction encounters a
deadlock and is automatically
rolled back so that your
application can take corrective action. To recover from this
error, run all the operations in this transaction again. A
deadlock occurs when requests for locks arrive in inconsistent
order between transactions. The transaction that was rolled back
released all its locks, and the other transaction can now get all
the locks it requested. Thus, when you re-run the transaction that
was rolled back, it might have to wait for other transactions to
complete, but typically the deadlock does not recur. If you
encounter frequent deadlocks, make the sequence of locking
operations (LOCK TABLES
, SELECT ...
FOR UPDATE
, and so on) consistent between the different
transactions or applications that experience the issue. See
Section 14.6.9, “How to Cope with Deadlocks” for details.
Error: 1214
SQLSTATE: HY000
(ER_TABLE_CANT_HANDLE_FT
)
Message: The used table type doesn't support FULLTEXT indexes
Error: 1215
SQLSTATE: HY000
(ER_CANNOT_ADD_FOREIGN
)
Message: Cannot add foreign key constraint
Error: 1216
SQLSTATE: 23000
(ER_NO_REFERENCED_ROW
)
Message: Cannot add or update a child row: a foreign key constraint fails
InnoDB
reports this error when you try to add a
row but there is no parent row, and a
foreign key
constraint fails. Add the parent row first.
Error: 1217
SQLSTATE: 23000
(ER_ROW_IS_REFERENCED
)
Message: Cannot delete or update a parent row: a foreign key constraint fails
InnoDB
reports this error when you try to
delete a parent row that has children, and a
foreign key
constraint fails. Delete the children first.
Error: 1218
SQLSTATE: 08S01
(ER_CONNECT_TO_MASTER
)
Message: Error connecting to master: %s
Error: 1219
SQLSTATE: HY000
(ER_QUERY_ON_MASTER
)
Message: Error running query on master: %s
Error: 1220
SQLSTATE: HY000
(ER_ERROR_WHEN_EXECUTING_COMMAND
)
Message: Error when executing command %s: %s
Error: 1221
SQLSTATE: HY000
(ER_WRONG_USAGE
)
Message: Incorrect usage of %s and %s
Error: 1222
SQLSTATE: 21000
(ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
)
Message: The used SELECT statements have a different number of columns
Error: 1223
SQLSTATE: HY000
(ER_CANT_UPDATE_WITH_READLOCK
)
Message: Can't execute the query because you have a conflicting read lock
Error: 1224
SQLSTATE: HY000
(ER_MIXING_NOT_ALLOWED
)
Message: Mixing of transactional and non-transactional tables is disabled
Error: 1225
SQLSTATE: HY000
(ER_DUP_ARGUMENT
)
Message: Option '%s' used twice in statement
Error: 1226
SQLSTATE: 42000
(ER_USER_LIMIT_REACHED
)
Message: User '%s' has exceeded the '%s' resource (current value: %ld)
Error: 1227
SQLSTATE: 42000
(ER_SPECIFIC_ACCESS_DENIED_ERROR
)
Message: Access denied; you need (at least one of) the %s privilege(s) for this operation
Error: 1228
SQLSTATE: HY000
(ER_LOCAL_VARIABLE
)
Message: Variable '%s' is a SESSION variable and can't be used with SET GLOBAL
Error: 1229
SQLSTATE: HY000
(ER_GLOBAL_VARIABLE
)
Message: Variable '%s' is a GLOBAL variable and should be set with SET GLOBAL
Error: 1230
SQLSTATE: 42000
(ER_NO_DEFAULT
)
Message: Variable '%s' doesn't have a default value
Error: 1231
SQLSTATE: 42000
(ER_WRONG_VALUE_FOR_VAR
)
Message: Variable '%s' can't be set to the value of '%s'
Error: 1232
SQLSTATE: 42000
(ER_WRONG_TYPE_FOR_VAR
)
Message: Incorrect argument type to variable '%s'
Error: 1233
SQLSTATE: HY000
(ER_VAR_CANT_BE_READ
)
Message: Variable '%s' can only be set, not read
Error: 1234
SQLSTATE: 42000
(ER_CANT_USE_OPTION_HERE
)
Message: Incorrect usage/placement of '%s'
Error: 1235
SQLSTATE: 42000
(ER_NOT_SUPPORTED_YET
)
Message: This version of MySQL doesn't yet support '%s'
Error: 1236
SQLSTATE: HY000
(ER_MASTER_FATAL_ERROR_READING_BINLOG
)
Message: Got fatal error %d from master when reading data from binary log: '%s'
Error: 1237
SQLSTATE: HY000
(ER_SLAVE_IGNORED_TABLE
)
Message: Slave SQL thread ignored the query because of replicate-*-table rules
Error: 1238
SQLSTATE: HY000
(ER_INCORRECT_GLOBAL_LOCAL_VAR
)
Message: Variable '%s' is a %s variable
Error: 1239
SQLSTATE: 42000
(ER_WRONG_FK_DEF
)
Message: Incorrect foreign key definition for '%s': %s
Error: 1240
SQLSTATE: HY000
(ER_KEY_REF_DO_NOT_MATCH_TABLE_REF
)
Message: Key reference and table reference don't match
Error: 1241
SQLSTATE: 21000
(ER_OPERAND_COLUMNS
)
Message: Operand should contain %d column(s)
Error: 1242
SQLSTATE: 21000
(ER_SUBQUERY_NO_1_ROW
)
Message: Subquery returns more than 1 row
Error: 1243
SQLSTATE: HY000
(ER_UNKNOWN_STMT_HANDLER
)
Message: Unknown prepared statement handler (%.*s) given to %s
Error: 1244
SQLSTATE: HY000
(ER_CORRUPT_HELP_DB
)
Message: Help database is corrupt or does not exist
Error: 1245
SQLSTATE: HY000
(ER_CYCLIC_REFERENCE
)
Message: Cyclic reference on subqueries
Error: 1246
SQLSTATE: HY000
(ER_AUTO_CONVERT
)
Message: Converting column '%s' from %s to %s
Error: 1247
SQLSTATE: 42S22
(ER_ILLEGAL_REFERENCE
)
Message: Reference '%s' not supported (%s)
Error: 1248
SQLSTATE: 42000
(ER_DERIVED_MUST_HAVE_ALIAS
)
Message: Every derived table must have its own alias
Error: 1249
SQLSTATE: 01000
(ER_SELECT_REDUCED
)
Message: Select %u was reduced during optimization
Error: 1250
SQLSTATE: 42000
(ER_TABLENAME_NOT_ALLOWED_HERE
)
Message: Table '%s' from one of the SELECTs cannot be used in %s
Error: 1251
SQLSTATE: 08004
(ER_NOT_SUPPORTED_AUTH_MODE
)
Message: Client does not support authentication protocol requested by server; consider upgrading MySQL client
Error: 1252
SQLSTATE: 42000
(ER_SPATIAL_CANT_HAVE_NULL
)
Message: All parts of a SPATIAL index must be NOT NULL
Error: 1253
SQLSTATE: 42000
(ER_COLLATION_CHARSET_MISMATCH
)
Message: COLLATION '%s' is not valid for CHARACTER SET '%s'
Error: 1254
SQLSTATE: HY000
(ER_SLAVE_WAS_RUNNING
)
Message: Slave is already running
Error: 1255
SQLSTATE: HY000
(ER_SLAVE_WAS_NOT_RUNNING
)
Message: Slave already has been stopped
Error: 1256
SQLSTATE: HY000
(ER_TOO_BIG_FOR_UNCOMPRESS
)
Message: Uncompressed data size too large; the maximum size is %d (probably, length of uncompressed data was corrupted)
Error: 1257
SQLSTATE: HY000
(ER_ZLIB_Z_MEM_ERROR
)
Message: ZLIB: Not enough memory
Error: 1258
SQLSTATE: HY000
(ER_ZLIB_Z_BUF_ERROR
)
Message: ZLIB: Not enough room in the output buffer (probably, length of uncompressed data was corrupted)
Error: 1259
SQLSTATE: HY000
(ER_ZLIB_Z_DATA_ERROR
)
Message: ZLIB: Input data corrupted
Error: 1260
SQLSTATE: HY000
(ER_CUT_VALUE_GROUP_CONCAT
)
Message: Row %u was cut by GROUP_CONCAT()
Error: 1261
SQLSTATE: 01000
(ER_WARN_TOO_FEW_RECORDS
)
Message: Row %ld doesn't contain data for all columns
Error: 1262
SQLSTATE: 01000
(ER_WARN_TOO_MANY_RECORDS
)
Message: Row %ld was truncated; it contained more data than there were input columns
Error: 1263
SQLSTATE: 22004
(ER_WARN_NULL_TO_NOTNULL
)
Message: Column set to default value; NULL supplied to NOT NULL column '%s' at row %ld
Error: 1264
SQLSTATE: 22003
(ER_WARN_DATA_OUT_OF_RANGE
)
Message: Out of range value for column '%s' at row %ld
Error: 1265
SQLSTATE: 01000
(WARN_DATA_TRUNCATED
)
Message: Data truncated for column '%s' at row %ld
Error: 1266
SQLSTATE: HY000
(ER_WARN_USING_OTHER_HANDLER
)
Message: Using storage engine %s for table '%s'
Error: 1267
SQLSTATE: HY000
(ER_CANT_AGGREGATE_2COLLATIONS
)
Message: Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'
Error: 1268
SQLSTATE: HY000
(ER_DROP_USER
)
Message: Cannot drop one or more of the requested users
Error: 1269
SQLSTATE: HY000
(ER_REVOKE_GRANTS
)
Message: Can't revoke all privileges for one or more of the requested users
Error: 1270
SQLSTATE: HY000
(ER_CANT_AGGREGATE_3COLLATIONS
)
Message: Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'
Error: 1271
SQLSTATE: HY000
(ER_CANT_AGGREGATE_NCOLLATIONS
)
Message: Illegal mix of collations for operation '%s'
Error: 1272
SQLSTATE: HY000
(ER_VARIABLE_IS_NOT_STRUCT
)
Message: Variable '%s' is not a variable component (can't be used as XXXX.variable_name)
Error: 1273
SQLSTATE: HY000
(ER_UNKNOWN_COLLATION
)
Message: Unknown collation: '%s'
Error: 1274
SQLSTATE: HY000
(ER_SLAVE_IGNORED_SSL_PARAMS
)
Message: SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support; they can be used later if MySQL slave with SSL is started
Error: 1275
SQLSTATE: HY000
(ER_SERVER_IS_IN_SECURE_AUTH_MODE
)
Message: Server is running in --secure-auth mode, but '%s'@'%s' has a password in the old format; please change the password to the new format
Error: 1276
SQLSTATE: HY000
(ER_WARN_FIELD_RESOLVED
)
Message: Field or reference '%s%s%s%s%s' of SELECT #%d was resolved in SELECT #%d
Error: 1277
SQLSTATE: HY000
(ER_BAD_SLAVE_UNTIL_COND
)
Message: Incorrect parameter or combination of parameters for START SLAVE UNTIL
Error: 1278
SQLSTATE: HY000
(ER_MISSING_SKIP_SLAVE
)
Message: It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart
Error: 1279
SQLSTATE: HY000
(ER_UNTIL_COND_IGNORED
)
Message: SQL thread is not to be started so UNTIL options are ignored
Error: 1280
SQLSTATE: 42000
(ER_WRONG_NAME_FOR_INDEX
)
Message: Incorrect index name '%s'
Error: 1281
SQLSTATE: 42000
(ER_WRONG_NAME_FOR_CATALOG
)
Message: Incorrect catalog name '%s'
Error: 1282
SQLSTATE: HY000
(ER_WARN_QC_RESIZE
)
Message: Query cache failed to set size %lu; new query cache size is %lu
Error: 1283
SQLSTATE: HY000
(ER_BAD_FT_COLUMN
)
Message: Column '%s' cannot be part of FULLTEXT index
Error: 1284
SQLSTATE: HY000
(ER_UNKNOWN_KEY_CACHE
)
Message: Unknown key cache '%s'
Error: 1285
SQLSTATE: HY000
(ER_WARN_HOSTNAME_WONT_WORK
)
Message: MySQL is started in --skip-name-resolve mode; you must restart it without this switch for this grant to work
Error: 1286
SQLSTATE: 42000
(ER_UNKNOWN_STORAGE_ENGINE
)
Message: Unknown storage engine '%s'
Error: 1287
SQLSTATE: HY000
(ER_WARN_DEPRECATED_SYNTAX
)
Message: '%s' is deprecated and will be removed in a future release. Please use %s instead
Error: 1288
SQLSTATE: HY000
(ER_NON_UPDATABLE_TABLE
)
Message: The target table %s of the %s is not updatable
Error: 1289
SQLSTATE: HY000
(ER_FEATURE_DISABLED
)
Message: The '%s' feature is disabled; you need MySQL built with '%s' to have it working
Error: 1290
SQLSTATE: HY000
(ER_OPTION_PREVENTS_STATEMENT
)
Message: The MySQL server is running with the %s option so it cannot execute this statement
Error: 1291
SQLSTATE: HY000
(ER_DUPLICATED_VALUE_IN_TYPE
)
Message: Column '%s' has duplicated value '%s' in %s
Error: 1292
SQLSTATE: 22007
(ER_TRUNCATED_WRONG_VALUE
)
Message: Truncated incorrect %s value: '%s'
Error: 1293
SQLSTATE: HY000
(ER_TOO_MUCH_AUTO_TIMESTAMP_COLS
)
Message: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
Error: 1294
SQLSTATE: HY000
(ER_INVALID_ON_UPDATE
)
Message: Invalid ON UPDATE clause for '%s' column
Error: 1295
SQLSTATE: HY000
(ER_UNSUPPORTED_PS
)
Message: This command is not supported in the prepared statement protocol yet
Error: 1296
SQLSTATE: HY000
(ER_GET_ERRMSG
)
Message: Got error %d '%s' from %s
Error: 1297
SQLSTATE: HY000
(ER_GET_TEMPORARY_ERRMSG
)
Message: Got temporary error %d '%s' from %s
Error: 1298
SQLSTATE: HY000
(ER_UNKNOWN_TIME_ZONE
)
Message: Unknown or incorrect time zone: '%s'
Error: 1299
SQLSTATE: HY000
(ER_WARN_INVALID_TIMESTAMP
)
Message: Invalid TIMESTAMP value in column '%s' at row %ld
Error: 1300
SQLSTATE: HY000
(ER_INVALID_CHARACTER_STRING
)
Message: Invalid %s character string: '%s'
Error: 1301
SQLSTATE: HY000
(ER_WARN_ALLOWED_PACKET_OVERFLOWED
)
Message: Result of %s() was larger than max_allowed_packet (%ld) - truncated
Error: 1302
SQLSTATE: HY000
(ER_CONFLICTING_DECLARATIONS
)
Message: Conflicting declarations: '%s%s' and '%s%s'
Error: 1303
SQLSTATE: 2F003
(ER_SP_NO_RECURSIVE_CREATE
)
Message: Can't create a %s from within another stored routine
Error: 1304
SQLSTATE: 42000
(ER_SP_ALREADY_EXISTS
)
Message: %s %s already exists
Error: 1305
SQLSTATE: 42000
(ER_SP_DOES_NOT_EXIST
)
Message: %s %s does not exist
Error: 1306
SQLSTATE: HY000
(ER_SP_DROP_FAILED
)
Message: Failed to DROP %s %s
Error: 1307
SQLSTATE: HY000
(ER_SP_STORE_FAILED
)
Message: Failed to CREATE %s %s
Error: 1308
SQLSTATE: 42000
(ER_SP_LILABEL_MISMATCH
)
Message: %s with no matching label: %s
Error: 1309
SQLSTATE: 42000
(ER_SP_LABEL_REDEFINE
)
Message: Redefining label %s
Error: 1310
SQLSTATE: 42000
(ER_SP_LABEL_MISMATCH
)
Message: End-label %s without match
Error: 1311
SQLSTATE: 01000
(ER_SP_UNINIT_VAR
)
Message: Referring to uninitialized variable %s
Error: 1312
SQLSTATE: 0A000
(ER_SP_BADSELECT
)
Message: PROCEDURE %s can't return a result set in the given context
Error: 1313
SQLSTATE: 42000
(ER_SP_BADRETURN
)
Message: RETURN is only allowed in a FUNCTION
Error: 1314
SQLSTATE: 0A000
(ER_SP_BADSTATEMENT
)
Message: %s is not allowed in stored procedures
Error: 1315
SQLSTATE: 42000
(ER_UPDATE_LOG_DEPRECATED_IGNORED
)
Message: The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MySQL 5.6.
Error: 1316
SQLSTATE: 42000
(ER_UPDATE_LOG_DEPRECATED_TRANSLATED
)
Message: The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been translated to SET SQL_LOG_BIN. This option will be removed in MySQL 5.6.
Error: 1317
SQLSTATE: 70100
(ER_QUERY_INTERRUPTED
)
Message: Query execution was interrupted
Error: 1318
SQLSTATE: 42000
(ER_SP_WRONG_NO_OF_ARGS
)
Message: Incorrect number of arguments for %s %s; expected %u, got %u
Error: 1319
SQLSTATE: 42000
(ER_SP_COND_MISMATCH
)
Message: Undefined CONDITION: %s
Error: 1320
SQLSTATE: 42000
(ER_SP_NORETURN
)
Message: No RETURN found in FUNCTION %s
Error: 1321
SQLSTATE: 2F005
(ER_SP_NORETURNEND
)
Message: FUNCTION %s ended without RETURN
Error: 1322
SQLSTATE: 42000
(ER_SP_BAD_CURSOR_QUERY
)
Message: Cursor statement must be a SELECT
Error: 1323
SQLSTATE: 42000
(ER_SP_BAD_CURSOR_SELECT
)
Message: Cursor SELECT must not have INTO
Error: 1324
SQLSTATE: 42000
(ER_SP_CURSOR_MISMATCH
)
Message: Undefined CURSOR: %s
Error: 1325
SQLSTATE: 24000
(ER_SP_CURSOR_ALREADY_OPEN
)
Message: Cursor is already open
Error: 1326
SQLSTATE: 24000
(ER_SP_CURSOR_NOT_OPEN
)
Message: Cursor is not open
Error: 1327
SQLSTATE: 42000
(ER_SP_UNDECLARED_VAR
)
Message: Undeclared variable: %s
Error: 1328
SQLSTATE: HY000
(ER_SP_WRONG_NO_OF_FETCH_ARGS
)
Message: Incorrect number of FETCH variables
Error: 1329
SQLSTATE: 02000
(ER_SP_FETCH_NO_DATA
)
Message: No data - zero rows fetched, selected, or processed
Error: 1330
SQLSTATE: 42000
(ER_SP_DUP_PARAM
)
Message: Duplicate parameter: %s
Error: 1331
SQLSTATE: 42000
(ER_SP_DUP_VAR
)
Message: Duplicate variable: %s
Error: 1332
SQLSTATE: 42000
(ER_SP_DUP_COND
)
Message: Duplicate condition: %s
Error: 1333
SQLSTATE: 42000
(ER_SP_DUP_CURS
)
Message: Duplicate cursor: %s
Error: 1334
SQLSTATE: HY000
(ER_SP_CANT_ALTER
)
Message: Failed to ALTER %s %s
Error: 1335
SQLSTATE: 0A000
(ER_SP_SUBSELECT_NYI
)
Message: Subquery value not supported
Error: 1336
SQLSTATE: 0A000
(ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
)
Message: %s is not allowed in stored function or trigger
Error: 1337
SQLSTATE: 42000
(ER_SP_VARCOND_AFTER_CURSHNDLR
)
Message: Variable or condition declaration after cursor or handler declaration
Error: 1338
SQLSTATE: 42000
(ER_SP_CURSOR_AFTER_HANDLER
)
Message: Cursor declaration after handler declaration
Error: 1339
SQLSTATE: 20000
(ER_SP_CASE_NOT_FOUND
)
Message: Case not found for CASE statement
Error: 1340
SQLSTATE: HY000
(ER_FPARSER_TOO_BIG_FILE
)
Message: Configuration file '%s' is too big
Error: 1341
SQLSTATE: HY000
(ER_FPARSER_BAD_HEADER
)
Message: Malformed file type header in file '%s'
Error: 1342
SQLSTATE: HY000
(ER_FPARSER_EOF_IN_COMMENT
)
Message: Unexpected end of file while parsing comment '%s'
Error: 1343
SQLSTATE: HY000
(ER_FPARSER_ERROR_IN_PARAMETER
)
Message: Error while parsing parameter '%s' (line: '%s')
Error: 1344
SQLSTATE: HY000
(ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER
)
Message: Unexpected end of file while skipping unknown parameter '%s'
Error: 1345
SQLSTATE: HY000
(ER_VIEW_NO_EXPLAIN
)
Message: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
Error: 1346
SQLSTATE: HY000
(ER_FRM_UNKNOWN_TYPE
)
Message: File '%s' has unknown type '%s' in its header
Error: 1347
SQLSTATE: HY000
(ER_WRONG_OBJECT
)
Message: '%s.%s' is not %s
Error: 1348
SQLSTATE: HY000
(ER_NONUPDATEABLE_COLUMN
)
Message: Column '%s' is not updatable
Error: 1349
SQLSTATE: HY000
(ER_VIEW_SELECT_DERIVED
)
Message: View's SELECT contains a subquery in the FROM clause
Error: 1350
SQLSTATE: HY000
(ER_VIEW_SELECT_CLAUSE
)
Message: View's SELECT contains a '%s' clause
Error: 1351
SQLSTATE: HY000
(ER_VIEW_SELECT_VARIABLE
)
Message: View's SELECT contains a variable or parameter
Error: 1352
SQLSTATE: HY000
(ER_VIEW_SELECT_TMPTABLE
)
Message: View's SELECT refers to a temporary table '%s'
Error: 1353
SQLSTATE: HY000
(ER_VIEW_WRONG_LIST
)
Message: View's SELECT and view's field list have different column counts
Error: 1354
SQLSTATE: HY000
(ER_WARN_VIEW_MERGE
)
Message: View merge algorithm can't be used here for now (assumed undefined algorithm)
Error: 1355
SQLSTATE: HY000
(ER_WARN_VIEW_WITHOUT_KEY
)
Message: View being updated does not have complete key of underlying table in it
Error: 1356
SQLSTATE: HY000
(ER_VIEW_INVALID
)
Message: View '%s.%s' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
Error: 1357
SQLSTATE: HY000
(ER_SP_NO_DROP_SP
)
Message: Can't drop or alter a %s from within another stored routine
Error: 1358
SQLSTATE: HY000
(ER_SP_GOTO_IN_HNDLR
)
Message: GOTO is not allowed in a stored procedure handler
Error: 1359
SQLSTATE: HY000
(ER_TRG_ALREADY_EXISTS
)
Message: Trigger already exists
Error: 1360
SQLSTATE: HY000
(ER_TRG_DOES_NOT_EXIST
)
Message: Trigger does not exist
Error: 1361
SQLSTATE: HY000
(ER_TRG_ON_VIEW_OR_TEMP_TABLE
)
Message: Trigger's '%s' is view or temporary table
Error: 1362
SQLSTATE: HY000
(ER_TRG_CANT_CHANGE_ROW
)
Message: Updating of %s row is not allowed in %strigger
Error: 1363
SQLSTATE: HY000
(ER_TRG_NO_SUCH_ROW_IN_TRG
)
Message: There is no %s row in %s trigger
Error: 1364
SQLSTATE: HY000
(ER_NO_DEFAULT_FOR_FIELD
)
Message: Field '%s' doesn't have a default value
Error: 1365
SQLSTATE: 22012
(ER_DIVISION_BY_ZERO
)
Message: Division by 0
Error: 1366
SQLSTATE: HY000
(ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
)
Message: Incorrect %s value: '%s' for column '%s' at row %ld
Error: 1367
SQLSTATE: 22007
(ER_ILLEGAL_VALUE_FOR_TYPE
)
Message: Illegal %s '%s' value found during parsing
Error: 1368
SQLSTATE: HY000
(ER_VIEW_NONUPD_CHECK
)
Message: CHECK OPTION on non-updatable view '%s.%s'
Error: 1369
SQLSTATE: HY000
(ER_VIEW_CHECK_FAILED
)
Message: CHECK OPTION failed '%s.%s'
Error: 1370
SQLSTATE: 42000
(ER_PROCACCESS_DENIED_ERROR
)
Message: %s command denied to user '%s'@'%s' for routine '%s'
Error: 1371
SQLSTATE: HY000
(ER_RELAY_LOG_FAIL
)
Message: Failed purging old relay logs: %s
Error: 1372
SQLSTATE: HY000
(ER_PASSWD_LENGTH
)
Message: Password hash should be a %d-digit hexadecimal number
Error: 1373
SQLSTATE: HY000
(ER_UNKNOWN_TARGET_BINLOG
)
Message: Target log not found in binlog index
Error: 1374
SQLSTATE: HY000
(ER_IO_ERR_LOG_INDEX_READ
)
Message: I/O error reading log index file
Error: 1375
SQLSTATE: HY000
(ER_BINLOG_PURGE_PROHIBITED
)
Message: Server configuration does not permit binlog purge
Error: 1376
SQLSTATE: HY000
(ER_FSEEK_FAIL
)
Message: Failed on fseek()
Error: 1377
SQLSTATE: HY000
(ER_BINLOG_PURGE_FATAL_ERR
)
Message: Fatal error during log purge
Error: 1378
SQLSTATE: HY000
(ER_LOG_IN_USE
)
Message: A purgeable log is in use, will not purge
Error: 1379
SQLSTATE: HY000
(ER_LOG_PURGE_UNKNOWN_ERR
)
Message: Unknown error during log purge
Error: 1380
SQLSTATE: HY000
(ER_RELAY_LOG_INIT
)
Message: Failed initializing relay log position: %s
Error: 1381
SQLSTATE: HY000
(ER_NO_BINARY_LOGGING
)
Message: You are not using binary logging
Error: 1382
SQLSTATE: HY000
(ER_RESERVED_SYNTAX
)
Message: The '%s' syntax is reserved for purposes internal to the MySQL server
Error: 1383
SQLSTATE: HY000
(ER_WSAS_FAILED
)
Message: WSAStartup Failed
Error: 1384
SQLSTATE: HY000
(ER_DIFF_GROUPS_PROC
)
Message: Can't handle procedures with different groups yet
Error: 1385
SQLSTATE: HY000
(ER_NO_GROUP_FOR_PROC
)
Message: Select must have a group with this procedure
Error: 1386
SQLSTATE: HY000
(ER_ORDER_WITH_PROC
)
Message: Can't use ORDER clause with this procedure
Error: 1387
SQLSTATE: HY000
(ER_LOGGING_PROHIBIT_CHANGING_OF
)
Message: Binary logging and replication forbid changing the global server %s
Error: 1388
SQLSTATE: HY000
(ER_NO_FILE_MAPPING
)
Message: Can't map file: %s, errno: %d
Error: 1389
SQLSTATE: HY000
(ER_WRONG_MAGIC
)
Message: Wrong magic in %s
Error: 1390
SQLSTATE: HY000
(ER_PS_MANY_PARAM
)
Message: Prepared statement contains too many placeholders
Error: 1391
SQLSTATE: HY000
(ER_KEY_PART_0
)
Message: Key part '%s' length cannot be 0
Error: 1392
SQLSTATE: HY000
(ER_VIEW_CHECKSUM
)
Message: View text checksum failed
Error: 1393
SQLSTATE: HY000
(ER_VIEW_MULTIUPDATE
)
Message: Can not modify more than one base table through a join view '%s.%s'
Error: 1394
SQLSTATE: HY000
(ER_VIEW_NO_INSERT_FIELD_LIST
)
Message: Can not insert into join view '%s.%s' without fields list
Error: 1395
SQLSTATE: HY000
(ER_VIEW_DELETE_MERGE_VIEW
)
Message: Can not delete from join view '%s.%s'
Error: 1396
SQLSTATE: HY000
(ER_CANNOT_USER
)
Message: Operation %s failed for %s
Error: 1397
SQLSTATE: XAE04
(ER_XAER_NOTA
)
Message: XAER_NOTA: Unknown XID
Error: 1398
SQLSTATE: XAE05
(ER_XAER_INVAL
)
Message: XAER_INVAL: Invalid arguments (or unsupported command)
Error: 1399
SQLSTATE: XAE07
(ER_XAER_RMFAIL
)
Message: XAER_RMFAIL: The command cannot be executed when global transaction is in the %s state
Error: 1400
SQLSTATE: XAE09
(ER_XAER_OUTSIDE
)
Message: XAER_OUTSIDE: Some work is done outside global transaction
Error: 1401
SQLSTATE: XAE03
(ER_XAER_RMERR
)
Message: XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency
Error: 1402
SQLSTATE: XA100
(ER_XA_RBROLLBACK
)
Message: XA_RBROLLBACK: Transaction branch was rolled back
Error: 1403
SQLSTATE: 42000
(ER_NONEXISTING_PROC_GRANT
)
Message: There is no such grant defined for user '%s' on host '%s' on routine '%s'
Error: 1404
SQLSTATE: HY000
(ER_PROC_AUTO_GRANT_FAIL
)
Message: Failed to grant EXECUTE and ALTER ROUTINE privileges
Error: 1405
SQLSTATE: HY000
(ER_PROC_AUTO_REVOKE_FAIL
)
Message: Failed to revoke all privileges to dropped routine
Error: 1406
SQLSTATE: 22001
(ER_DATA_TOO_LONG
)
Message: Data too long for column '%s' at row %ld
Error: 1407
SQLSTATE: 42000
(ER_SP_BAD_SQLSTATE
)
Message: Bad SQLSTATE: '%s'
Error: 1408
SQLSTATE: HY000
(ER_STARTUP
)
Message: %s: ready for connections. Version: '%s' socket: '%s' port: %d %s
Error: 1409
SQLSTATE: HY000
(ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR
)
Message: Can't load value from file with fixed size rows to variable
Error: 1410
SQLSTATE: 42000
(ER_CANT_CREATE_USER_WITH_GRANT
)
Message: You are not allowed to create a user with GRANT
Error: 1411
SQLSTATE: HY000
(ER_WRONG_VALUE_FOR_TYPE
)
Message: Incorrect %s value: '%s' for function %s
Error: 1412
SQLSTATE: HY000
(ER_TABLE_DEF_CHANGED
)
Message: Table definition has changed, please retry transaction
Error: 1413
SQLSTATE: 42000
(ER_SP_DUP_HANDLER
)
Message: Duplicate handler declared in the same block
Error: 1414
SQLSTATE: 42000
(ER_SP_NOT_VAR_ARG
)
Message: OUT or INOUT argument %d for routine %s is not a variable or NEW pseudo-variable in BEFORE trigger
Error: 1415
SQLSTATE: 0A000
(ER_SP_NO_RETSET
)
Message: Not allowed to return a result set from a %s
Error: 1416
SQLSTATE: 22003
(ER_CANT_CREATE_GEOMETRY_OBJECT
)
Message: Cannot get geometry object from data you send to the GEOMETRY field
Error: 1417
SQLSTATE: HY000
(ER_FAILED_ROUTINE_BREAK_BINLOG
)
Message: A routine failed and has neither NO SQL nor READS SQL DATA in its declaration and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes
Error: 1418
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_ROUTINE
)
Message: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
Error: 1419
SQLSTATE: HY000
(ER_BINLOG_CREATE_ROUTINE_NEED_SUPER
)
Message: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
Error: 1420
SQLSTATE: HY000
(ER_EXEC_STMT_WITH_OPEN_CURSOR
)
Message: You can't execute a prepared statement which has an open cursor associated with it. Reset the statement to re-execute it.
Error: 1421
SQLSTATE: HY000
(ER_STMT_HAS_NO_OPEN_CURSOR
)
Message: The statement (%lu) has no open cursor.
Error: 1422
SQLSTATE: HY000
(ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
)
Message: Explicit or implicit commit is not allowed in stored function or trigger.
Error: 1423
SQLSTATE: HY000
(ER_NO_DEFAULT_FOR_VIEW_FIELD
)
Message: Field of view '%s.%s' underlying table doesn't have a default value
Error: 1424
SQLSTATE: HY000
(ER_SP_NO_RECURSION
)
Message: Recursive stored functions and triggers are not allowed.
Error: 1425
SQLSTATE: 42000
(ER_TOO_BIG_SCALE
)
Message: Too big scale %d specified for column '%s'. Maximum is %lu.
Error: 1426
SQLSTATE: 42000
(ER_TOO_BIG_PRECISION
)
Message: Too big precision %d specified for column '%s'. Maximum is %lu.
Error: 1427
SQLSTATE: 42000
(ER_M_BIGGER_THAN_D
)
Message: For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '%s').
Error: 1428
SQLSTATE: HY000
(ER_WRONG_LOCK_OF_SYSTEM_TABLE
)
Message: You can't combine write-locking of system tables with other tables or lock types
Error: 1429
SQLSTATE: HY000
(ER_CONNECT_TO_FOREIGN_DATA_SOURCE
)
Message: Unable to connect to foreign data source: %s
Error: 1430
SQLSTATE: HY000
(ER_QUERY_ON_FOREIGN_DATA_SOURCE
)
Message: There was a problem processing the query on the foreign data source. Data source error: %s
Error: 1431
SQLSTATE: HY000
(ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST
)
Message: The foreign data source you are trying to reference does not exist. Data source error: %s
Error: 1432
SQLSTATE: HY000
(ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE
)
Message: Can't create federated table. The data source connection string '%s' is not in the correct format
Error: 1433
SQLSTATE: HY000
(ER_FOREIGN_DATA_STRING_INVALID
)
Message: The data source connection string '%s' is not in the correct format
Error: 1434
SQLSTATE: HY000
(ER_CANT_CREATE_FEDERATED_TABLE
)
Message: Can't create federated table. Foreign data src error: %s
Error: 1435
SQLSTATE: HY000
(ER_TRG_IN_WRONG_SCHEMA
)
Message: Trigger in wrong schema
Error: 1436
SQLSTATE: HY000
(ER_STACK_OVERRUN_NEED_MORE
)
Message: Thread stack overrun: %ld bytes used of a %ld byte stack, and %ld bytes needed. Use 'mysqld --thread_stack=#' to specify a bigger stack.
Error: 1437
SQLSTATE: 42000
(ER_TOO_LONG_BODY
)
Message: Routine body for '%s' is too long
Error: 1438
SQLSTATE: HY000
(ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
)
Message: Cannot drop default keycache
Error: 1439
SQLSTATE: 42000
(ER_TOO_BIG_DISPLAYWIDTH
)
Message: Display width out of range for column '%s' (max = %lu)
Error: 1440
SQLSTATE: XAE08
(ER_XAER_DUPID
)
Message: XAER_DUPID: The XID already exists
Error: 1441
SQLSTATE: 22008
(ER_DATETIME_FUNCTION_OVERFLOW
)
Message: Datetime function: %s field overflow
Error: 1442
SQLSTATE: HY000
(ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
)
Message: Can't update table '%s' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Error: 1443
SQLSTATE: HY000
(ER_VIEW_PREVENT_UPDATE
)
Message: The definition of table '%s' prevents operation %s on table '%s'.
Error: 1444
SQLSTATE: HY000
(ER_PS_NO_RECURSION
)
Message: The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a prepared statement in such a recursive manner
Error: 1445
SQLSTATE: HY000
(ER_SP_CANT_SET_AUTOCOMMIT
)
Message: Not allowed to set autocommit from a stored function or trigger
Error: 1446
SQLSTATE: HY000
(ER_MALFORMED_DEFINER
)
Message: Definer is not fully qualified
Error: 1447
SQLSTATE: HY000
(ER_VIEW_FRM_NO_USER
)
Message: View '%s'.'%s' has no definer information (old table format). Current user is used as definer. Please recreate the view!
Error: 1448
SQLSTATE: HY000
(ER_VIEW_OTHER_USER
)
Message: You need the SUPER privilege for creation view with '%s'@'%s' definer
Error: 1449
SQLSTATE: HY000
(ER_NO_SUCH_USER
)
Message: The user specified as a definer ('%s'@'%s') does not exist
Error: 1450
SQLSTATE: HY000
(ER_FORBID_SCHEMA_CHANGE
)
Message: Changing schema from '%s' to '%s' is not allowed.
Error: 1451
SQLSTATE: 23000
(ER_ROW_IS_REFERENCED_2
)
Message: Cannot delete or update a parent row: a foreign key constraint fails (%s)
Error: 1452
SQLSTATE: 23000
(ER_NO_REFERENCED_ROW_2
)
Message: Cannot add or update a child row: a foreign key constraint fails (%s)
Error: 1453
SQLSTATE: 42000
(ER_SP_BAD_VAR_SHADOW
)
Message: Variable '%s' must be quoted with `...`, or renamed
Error: 1454
SQLSTATE: HY000
(ER_TRG_NO_DEFINER
)
Message: No definer attribute for trigger '%s'.'%s'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger.
Error: 1455
SQLSTATE: HY000
(ER_OLD_FILE_FORMAT
)
Message: '%s' has an old format, you should re-create the '%s' object(s)
Error: 1456
SQLSTATE: HY000
(ER_SP_RECURSION_LIMIT
)
Message: Recursive limit %d (as set by the max_sp_recursion_depth variable) was exceeded for routine %s
Error: 1457
SQLSTATE: HY000
(ER_SP_PROC_TABLE_CORRUPT
)
Message: Failed to load routine %s. The table mysql.proc is missing, corrupt, or contains bad data (internal code %d)
Error: 1458
SQLSTATE: 42000
(ER_SP_WRONG_NAME
)
Message: Incorrect routine name '%s'
Error: 1459
SQLSTATE: HY000
(ER_TABLE_NEEDS_UPGRADE
)
Message: Table upgrade required. Please do "REPAIR TABLE `%s`" or dump/reload to fix it!
Error: 1460
SQLSTATE: 42000
(ER_SP_NO_AGGREGATE
)
Message: AGGREGATE is not supported for stored functions
Error: 1461
SQLSTATE: 42000
(ER_MAX_PREPARED_STMT_COUNT_REACHED
)
Message: Can't create more than max_prepared_stmt_count statements (current value: %lu)
Error: 1462
SQLSTATE: HY000
(ER_VIEW_RECURSIVE
)
Message: `%s`.`%s` contains view recursion
Error: 1463
SQLSTATE: 42000
(ER_NON_GROUPING_FIELD_USED
)
Message: Non-grouping field '%s' is used in %s clause
Error: 1464
SQLSTATE: HY000
(ER_TABLE_CANT_HANDLE_SPKEYS
)
Message: The used table type doesn't support SPATIAL indexes
Error: 1465
SQLSTATE: HY000
(ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA
)
Message: Triggers can not be created on system tables
Error: 1466
SQLSTATE: HY000
(ER_REMOVED_SPACES
)
Message: Leading spaces are removed from name '%s'
Error: 1467
SQLSTATE: HY000
(ER_AUTOINC_READ_FAILED
)
Message: Failed to read auto-increment value from storage engine
Error: 1468
SQLSTATE: HY000
(ER_USERNAME
)
Message: user name
Error: 1469
SQLSTATE: HY000
(ER_HOSTNAME
)
Message: host name
Error: 1470
SQLSTATE: HY000
(ER_WRONG_STRING_LENGTH
)
Message: String '%s' is too long for %s (should be no longer than %d)
Error: 1471
SQLSTATE: HY000
(ER_NON_INSERTABLE_TABLE
)
Message: The target table %s of the %s is not insertable-into
Error: 1472
SQLSTATE: HY000
(ER_ADMIN_WRONG_MRG_TABLE
)
Message: Table '%s' is differently defined or of non-MyISAM type or doesn't exist
Error: 1473
SQLSTATE: HY000
(ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT
)
Message: Too high level of nesting for select
Error: 1474
SQLSTATE: HY000
(ER_NAME_BECOMES_EMPTY
)
Message: Name '%s' has become ''
Error: 1475
SQLSTATE: HY000
(ER_AMBIGUOUS_FIELD_TERM
)
Message: First character of the FIELDS TERMINATED string is ambiguous; please use non-optional and non-empty FIELDS ENCLOSED BY
Error: 1476
SQLSTATE: HY000
(ER_FOREIGN_SERVER_EXISTS
)
Message: The foreign server, %s, you are trying to create already exists.
Error: 1477
SQLSTATE: HY000
(ER_FOREIGN_SERVER_DOESNT_EXIST
)
Message: The foreign server name you are trying to reference does not exist. Data source error: %s
Error: 1478
SQLSTATE: HY000
(ER_ILLEGAL_HA_CREATE_OPTION
)
Message: Table storage engine '%s' does not support the create option '%s'
Error: 1479
SQLSTATE: HY000
(ER_PARTITION_REQUIRES_VALUES_ERROR
)
Message: Syntax error: %s PARTITIONING requires definition of VALUES %s for each partition
Error: 1480
SQLSTATE: HY000
(ER_PARTITION_WRONG_VALUES_ERROR
)
Message: Only %s PARTITIONING can use VALUES %s in partition definition
Error: 1481
SQLSTATE: HY000
(ER_PARTITION_MAXVALUE_ERROR
)
Message: MAXVALUE can only be used in last partition definition
Error: 1482
SQLSTATE: HY000
(ER_PARTITION_SUBPARTITION_ERROR
)
Message: Subpartitions can only be hash partitions and by key
Error: 1483
SQLSTATE: HY000
(ER_PARTITION_SUBPART_MIX_ERROR
)
Message: Must define subpartitions on all partitions if on one partition
Error: 1484
SQLSTATE: HY000
(ER_PARTITION_WRONG_NO_PART_ERROR
)
Message: Wrong number of partitions defined, mismatch with previous setting
Error: 1485
SQLSTATE: HY000
(ER_PARTITION_WRONG_NO_SUBPART_ERROR
)
Message: Wrong number of subpartitions defined, mismatch with previous setting
Error: 1486
SQLSTATE: HY000
(ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR
)
Message: Constant/Random expression in (sub)partitioning function is not allowed
In 5.5.1:
ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR
was renamed to
ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
.
ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR
was removed after 5.5.0.
Error: 1486
SQLSTATE: HY000
(ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
)
Message: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
In 5.5.1:
ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR
was renamed to
ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
.
ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
was added in 5.5.1.
Error: 1487
SQLSTATE: HY000
(ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR
)
Message: Expression in RANGE/LIST VALUES must be constant
Error: 1488
SQLSTATE: HY000
(ER_FIELD_NOT_FOUND_PART_ERROR
)
Message: Field in list of fields for partition function not found in table
Error: 1489
SQLSTATE: HY000
(ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR
)
Message: List of fields is only allowed in KEY partitions
Error: 1490
SQLSTATE: HY000
(ER_INCONSISTENT_PARTITION_INFO_ERROR
)
Message: The partition info in the frm file is not consistent with what can be written into the frm file
Error: 1491
SQLSTATE: HY000
(ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
)
Message: The %s function returns the wrong type
Error: 1492
SQLSTATE: HY000
(ER_PARTITIONS_MUST_BE_DEFINED_ERROR
)
Message: For %s partitions each partition must be defined
Error: 1493
SQLSTATE: HY000
(ER_RANGE_NOT_INCREASING_ERROR
)
Message: VALUES LESS THAN value must be strictly increasing for each partition
Error: 1494
SQLSTATE: HY000
(ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR
)
Message: VALUES value must be of same type as partition function
Error: 1495
SQLSTATE: HY000
(ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR
)
Message: Multiple definition of same constant in list partitioning
Error: 1496
SQLSTATE: HY000
(ER_PARTITION_ENTRY_ERROR
)
Message: Partitioning can not be used stand-alone in query
Error: 1497
SQLSTATE: HY000
(ER_MIX_HANDLER_ERROR
)
Message: The mix of handlers in the partitions is not allowed in this version of MySQL
Error: 1498
SQLSTATE: HY000
(ER_PARTITION_NOT_DEFINED_ERROR
)
Message: For the partitioned engine it is necessary to define all %s
Error: 1499
SQLSTATE: HY000
(ER_TOO_MANY_PARTITIONS_ERROR
)
Message: Too many partitions (including subpartitions) were defined
Error: 1500
SQLSTATE: HY000
(ER_SUBPARTITION_ERROR
)
Message: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning
Error: 1501
SQLSTATE: HY000
(ER_CANT_CREATE_HANDLER_FILE
)
Message: Failed to create specific handler file
Error: 1502
SQLSTATE: HY000
(ER_BLOB_FIELD_IN_PART_FUNC_ERROR
)
Message: A BLOB field is not allowed in partition function
Error: 1503
SQLSTATE: HY000
(ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
)
Message: A %s must include all columns in the table's partitioning function
Error: 1504
SQLSTATE: HY000
(ER_NO_PARTS_ERROR
)
Message: Number of %s = 0 is not an allowed value
Error: 1505
SQLSTATE: HY000
(ER_PARTITION_MGMT_ON_NONPARTITIONED
)
Message: Partition management on a not partitioned table is not possible
Error: 1506
SQLSTATE: HY000
(ER_FOREIGN_KEY_ON_PARTITIONED
)
Message: Foreign key clause is not yet supported in conjunction with partitioning
Error: 1507
SQLSTATE: HY000
(ER_DROP_PARTITION_NON_EXISTENT
)
Message: Error in list of partitions to %s
Error: 1508
SQLSTATE: HY000
(ER_DROP_LAST_PARTITION
)
Message: Cannot remove all partitions, use DROP TABLE instead
Error: 1509
SQLSTATE: HY000
(ER_COALESCE_ONLY_ON_HASH_PARTITION
)
Message: COALESCE PARTITION can only be used on HASH/KEY partitions
Error: 1510
SQLSTATE: HY000
(ER_REORG_HASH_ONLY_ON_SAME_NO
)
Message: REORGANIZE PARTITION can only be used to reorganize partitions not to change their numbers
Error: 1511
SQLSTATE: HY000
(ER_REORG_NO_PARAM_ERROR
)
Message: REORGANIZE PARTITION without parameters can only be used on auto-partitioned tables using HASH PARTITIONs
Error: 1512
SQLSTATE: HY000
(ER_ONLY_ON_RANGE_LIST_PARTITION
)
Message: %s PARTITION can only be used on RANGE/LIST partitions
Error: 1513
SQLSTATE: HY000
(ER_ADD_PARTITION_SUBPART_ERROR
)
Message: Trying to Add partition(s) with wrong number of subpartitions
Error: 1514
SQLSTATE: HY000
(ER_ADD_PARTITION_NO_NEW_PARTITION
)
Message: At least one partition must be added
Error: 1515
SQLSTATE: HY000
(ER_COALESCE_PARTITION_NO_PARTITION
)
Message: At least one partition must be coalesced
Error: 1516
SQLSTATE: HY000
(ER_REORG_PARTITION_NOT_EXIST
)
Message: More partitions to reorganize than there are partitions
Error: 1517
SQLSTATE: HY000
(ER_SAME_NAME_PARTITION
)
Message: Duplicate partition name %s
Error: 1518
SQLSTATE: HY000
(ER_NO_BINLOG_ERROR
)
Message: It is not allowed to shut off binlog on this command
Error: 1519
SQLSTATE: HY000
(ER_CONSECUTIVE_REORG_PARTITIONS
)
Message: When reorganizing a set of partitions they must be in consecutive order
Error: 1520
SQLSTATE: HY000
(ER_REORG_OUTSIDE_RANGE
)
Message: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
Error: 1521
SQLSTATE: HY000
(ER_PARTITION_FUNCTION_FAILURE
)
Message: Partition function not supported in this version for this handler
Error: 1522
SQLSTATE: HY000
(ER_PART_STATE_ERROR
)
Message: Partition state cannot be defined from CREATE/ALTER TABLE
Error: 1523
SQLSTATE: HY000
(ER_LIMITED_PART_RANGE
)
Message: The %s handler only supports 32 bit integers in VALUES
Error: 1524
SQLSTATE: HY000
(ER_PLUGIN_IS_NOT_LOADED
)
Message: Plugin '%s' is not loaded
Error: 1525
SQLSTATE: HY000
(ER_WRONG_VALUE
)
Message: Incorrect %s value: '%s'
Error: 1526
SQLSTATE: HY000
(ER_NO_PARTITION_FOR_GIVEN_VALUE
)
Message: Table has no partition for value %s
Error: 1527
SQLSTATE: HY000
(ER_FILEGROUP_OPTION_ONLY_ONCE
)
Message: It is not allowed to specify %s more than once
Error: 1528
SQLSTATE: HY000
(ER_CREATE_FILEGROUP_FAILED
)
Message: Failed to create %s
Error: 1529
SQLSTATE: HY000
(ER_DROP_FILEGROUP_FAILED
)
Message: Failed to drop %s
Error: 1530
SQLSTATE: HY000
(ER_TABLESPACE_AUTO_EXTEND_ERROR
)
Message: The handler doesn't support autoextend of tablespaces
Error: 1531
SQLSTATE: HY000
(ER_WRONG_SIZE_NUMBER
)
Message: A size parameter was incorrectly specified, either number or on the form 10M
Error: 1532
SQLSTATE: HY000
(ER_SIZE_OVERFLOW_ERROR
)
Message: The size number was correct but we don't allow the digit part to be more than 2 billion
Error: 1533
SQLSTATE: HY000
(ER_ALTER_FILEGROUP_FAILED
)
Message: Failed to alter: %s
Error: 1534
SQLSTATE: HY000
(ER_BINLOG_ROW_LOGGING_FAILED
)
Message: Writing one row to the row-based binary log failed
Error: 1535
SQLSTATE: HY000
(ER_BINLOG_ROW_WRONG_TABLE_DEF
)
Message: Table definition on master and slave does not match: %s
Error: 1536
SQLSTATE: HY000
(ER_BINLOG_ROW_RBR_TO_SBR
)
Message: Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events
Error: 1537
SQLSTATE: HY000
(ER_EVENT_ALREADY_EXISTS
)
Message: Event '%s' already exists
Error: 1538
SQLSTATE: HY000
(ER_EVENT_STORE_FAILED
)
Message: Failed to store event %s. Error code %d from storage engine.
Error: 1539
SQLSTATE: HY000
(ER_EVENT_DOES_NOT_EXIST
)
Message: Unknown event '%s'
Error: 1540
SQLSTATE: HY000
(ER_EVENT_CANT_ALTER
)
Message: Failed to alter event '%s'
Error: 1541
SQLSTATE: HY000
(ER_EVENT_DROP_FAILED
)
Message: Failed to drop %s
Error: 1542
SQLSTATE: HY000
(ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG
)
Message: INTERVAL is either not positive or too big
Error: 1543
SQLSTATE: HY000
(ER_EVENT_ENDS_BEFORE_STARTS
)
Message: ENDS is either invalid or before STARTS
Error: 1544
SQLSTATE: HY000
(ER_EVENT_EXEC_TIME_IN_THE_PAST
)
Message: Event execution time is in the past. Event has been disabled
Error: 1545
SQLSTATE: HY000
(ER_EVENT_OPEN_TABLE_FAILED
)
Message: Failed to open mysql.event
Error: 1546
SQLSTATE: HY000
(ER_EVENT_NEITHER_M_EXPR_NOR_M_AT
)
Message: No datetime expression provided
Error: 1547
SQLSTATE: HY000
(ER_COL_COUNT_DOESNT_MATCH_CORRUPTED
)
Message: Column count of mysql.%s is wrong. Expected %d, found %d. The table is probably corrupted
Error: 1548
SQLSTATE: HY000
(ER_CANNOT_LOAD_FROM_TABLE
)
Message: Cannot load from mysql.%s. The table is probably corrupted
Error: 1549
SQLSTATE: HY000
(ER_EVENT_CANNOT_DELETE
)
Message: Failed to delete the event from mysql.event
Error: 1550
SQLSTATE: HY000
(ER_EVENT_COMPILE_ERROR
)
Message: Error during compilation of event's body
Error: 1551
SQLSTATE: HY000
(ER_EVENT_SAME_NAME
)
Message: Same old and new event name
Error: 1552
SQLSTATE: HY000
(ER_EVENT_DATA_TOO_LONG
)
Message: Data for column '%s' too long
Error: 1553
SQLSTATE: HY000
(ER_DROP_INDEX_FK
)
Message: Cannot drop index '%s': needed in a foreign key constraint
InnoDB
reports this error when you attempt to
drop the last index that can enforce a particular referential
constraint.
For optimal performance with DML statements,
InnoDB
requires an index to exist on
foreign key columns, so
that UPDATE
and DELETE
operations on a parent
table can easily check whether corresponding rows exist in
the child table. MySQL
creates or drops such indexes automatically when needed, as a
side-effect of CREATE TABLE
,
CREATE INDEX
, and
ALTER TABLE
statements.
When you drop an index, InnoDB
checks if the
index is used for checking a foreign key constraint. It is still
OK to drop the index if there is another index that can be used to
enforce the same constraint. InnoDB
prevents
you from dropping the last index that can enforce a particular
referential constraint.
Error: 1554
SQLSTATE: HY000
(ER_WARN_DEPRECATED_SYNTAX_WITH_VER
)
Message: The syntax '%s' is deprecated and will be removed in MySQL %s. Please use %s instead
Error: 1555
SQLSTATE: HY000
(ER_CANT_WRITE_LOCK_LOG_TABLE
)
Message: You can't write-lock a log table. Only read access is possible
Error: 1556
SQLSTATE: HY000
(ER_CANT_LOCK_LOG_TABLE
)
Message: You can't use locks with log tables.
Error: 1557
SQLSTATE: 23000
(ER_FOREIGN_DUPLICATE_KEY
)
Message: Upholding foreign key constraints for table '%s', entry '%s', key %d would lead to a duplicate entry
Error: 1558
SQLSTATE: HY000
(ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE
)
Message: Column count of mysql.%s is wrong. Expected %d, found %d. Created with MySQL %d, now running %d. Please use mysql_upgrade to fix this error.
Error: 1559
SQLSTATE: HY000
(ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR
)
Message: Cannot switch out of the row-based binary log format when the session has open temporary tables
Error: 1560
SQLSTATE: HY000
(ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT
)
Message: Cannot change the binary logging format inside a stored function or trigger
Error: 1561
SQLSTATE: HY000
(ER_NDB_CANT_SWITCH_BINLOG_FORMAT
)
Message: The NDB cluster engine does not support changing the binlog format on the fly yet
Error: 1562
SQLSTATE: HY000
(ER_PARTITION_NO_TEMPORARY
)
Message: Cannot create temporary table with partitions
Error: 1563
SQLSTATE: HY000
(ER_PARTITION_CONST_DOMAIN_ERROR
)
Message: Partition constant is out of partition function domain
Error: 1564
SQLSTATE: HY000
(ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
)
Message: This partition function is not allowed
Error: 1565
SQLSTATE: HY000
(ER_DDL_LOG_ERROR
)
Message: Error in DDL log
Error: 1566
SQLSTATE: HY000
(ER_NULL_IN_VALUES_LESS_THAN
)
Message: Not allowed to use NULL value in VALUES LESS THAN
Error: 1567
SQLSTATE: HY000
(ER_WRONG_PARTITION_NAME
)
Message: Incorrect partition name
Error: 1568
SQLSTATE: 25001
(ER_CANT_CHANGE_TX_ISOLATION
)
Message: Transaction isolation level can't be changed while a transaction is in progress
Error: 1569
SQLSTATE: HY000
(ER_DUP_ENTRY_AUTOINCREMENT_CASE
)
Message: ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '%s' for key '%s'
Error: 1570
SQLSTATE: HY000
(ER_EVENT_MODIFY_QUEUE_ERROR
)
Message: Internal scheduler error %d
Error: 1571
SQLSTATE: HY000
(ER_EVENT_SET_VAR_ERROR
)
Message: Error during starting/stopping of the scheduler. Error code %u
Error: 1572
SQLSTATE: HY000
(ER_PARTITION_MERGE_ERROR
)
Message: Engine cannot be used in partitioned tables
Error: 1573
SQLSTATE: HY000
(ER_CANT_ACTIVATE_LOG
)
Message: Cannot activate '%s' log
Error: 1574
SQLSTATE: HY000
(ER_RBR_NOT_AVAILABLE
)
Message: The server was not built with row-based replication
Error: 1575
SQLSTATE: HY000
(ER_BASE64_DECODE_ERROR
)
Message: Decoding of base64 string failed
Error: 1576
SQLSTATE: HY000
(ER_EVENT_RECURSION_FORBIDDEN
)
Message: Recursion of EVENT DDL statements is forbidden when body is present
Error: 1577
SQLSTATE: HY000
(ER_EVENTS_DB_ERROR
)
Message: Cannot proceed because system tables used by Event Scheduler were found damaged at server start
To address this issue, try running mysql_upgrade.
Error: 1578
SQLSTATE: HY000
(ER_ONLY_INTEGERS_ALLOWED
)
Message: Only integers allowed as number here
Error: 1579
SQLSTATE: HY000
(ER_UNSUPORTED_LOG_ENGINE
)
Message: This storage engine cannot be used for log tables"
Error: 1580
SQLSTATE: HY000
(ER_BAD_LOG_STATEMENT
)
Message: You cannot '%s' a log table if logging is enabled
Error: 1581
SQLSTATE: HY000
(ER_CANT_RENAME_LOG_TABLE
)
Message: Cannot rename '%s'. When logging enabled, rename to/from log table must rename two tables: the log table to an archive table and another table back to '%s'
Error: 1582
SQLSTATE: 42000
(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
)
Message: Incorrect parameter count in the call to native function '%s'
Error: 1583
SQLSTATE: 42000
(ER_WRONG_PARAMETERS_TO_NATIVE_FCT
)
Message: Incorrect parameters in the call to native function '%s'
Error: 1584
SQLSTATE: 42000
(ER_WRONG_PARAMETERS_TO_STORED_FCT
)
Message: Incorrect parameters in the call to stored function '%s'
Error: 1585
SQLSTATE: HY000
(ER_NATIVE_FCT_NAME_COLLISION
)
Message: This function '%s' has the same name as a native function
Error: 1586
SQLSTATE: 23000
(ER_DUP_ENTRY_WITH_KEY_NAME
)
Message: Duplicate entry '%s' for key '%s'
The format string for this error is also used with
ER_DUP_ENTRY
.
Error: 1587
SQLSTATE: HY000
(ER_BINLOG_PURGE_EMFILE
)
Message: Too many files opened, please execute the command again
Error: 1588
SQLSTATE: HY000
(ER_EVENT_CANNOT_CREATE_IN_THE_PAST
)
Message: Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
Error: 1589
SQLSTATE: HY000
(ER_EVENT_CANNOT_ALTER_IN_THE_PAST
)
Message: Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
Error: 1590
SQLSTATE: HY000
(ER_SLAVE_INCIDENT
)
Message: The incident %s occured on the master. Message: %s
Error: 1591
SQLSTATE: HY000
(ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT
)
Message: Table has no partition for some existing values
Error: 1592
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_STATEMENT
)
Message: Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. %s
Error: 1593
SQLSTATE: HY000
(ER_SLAVE_FATAL_ERROR
)
Message: Fatal error: %s
Error: 1594
SQLSTATE: HY000
(ER_SLAVE_RELAY_LOG_READ_FAILURE
)
Message: Relay log read failure: %s
Error: 1595
SQLSTATE: HY000
(ER_SLAVE_RELAY_LOG_WRITE_FAILURE
)
Message: Relay log write failure: %s
Error: 1596
SQLSTATE: HY000
(ER_SLAVE_CREATE_EVENT_FAILURE
)
Message: Failed to create %s
Error: 1597
SQLSTATE: HY000
(ER_SLAVE_MASTER_COM_FAILURE
)
Message: Master command %s failed: %s
Error: 1598
SQLSTATE: HY000
(ER_BINLOG_LOGGING_IMPOSSIBLE
)
Message: Binary logging not possible. Message: %s
Error: 1599
SQLSTATE: HY000
(ER_VIEW_NO_CREATION_CTX
)
Message: View `%s`.`%s` has no creation context
Error: 1600
SQLSTATE: HY000
(ER_VIEW_INVALID_CREATION_CTX
)
Message: Creation context of view `%s`.`%s' is invalid
Error: 1601
SQLSTATE: HY000
(ER_SR_INVALID_CREATION_CTX
)
Message: Creation context of stored routine `%s`.`%s` is invalid
Error: 1602
SQLSTATE: HY000
(ER_TRG_CORRUPTED_FILE
)
Message: Corrupted TRG file for table `%s`.`%s`
Error: 1603
SQLSTATE: HY000
(ER_TRG_NO_CREATION_CTX
)
Message: Triggers for table `%s`.`%s` have no creation context
Error: 1604
SQLSTATE: HY000
(ER_TRG_INVALID_CREATION_CTX
)
Message: Trigger creation context of table `%s`.`%s` is invalid
Error: 1605
SQLSTATE: HY000
(ER_EVENT_INVALID_CREATION_CTX
)
Message: Creation context of event `%s`.`%s` is invalid
Error: 1606
SQLSTATE: HY000
(ER_TRG_CANT_OPEN_TABLE
)
Message: Cannot open table for trigger `%s`.`%s`
Error: 1607
SQLSTATE: HY000
(ER_CANT_CREATE_SROUTINE
)
Message: Cannot create stored routine `%s`. Check warnings
Error: 1608
SQLSTATE: HY000
(ER_SLAVE_AMBIGOUS_EXEC_MODE
)
Message: Ambiguous slave modes combination. %s
In 5.5.3:
ER_SLAVE_AMBIGOUS_EXEC_MODE
was
renamed to ER_NEVER_USED
.
ER_SLAVE_AMBIGOUS_EXEC_MODE
was
removed after 5.5.2.
Error: 1608
SQLSTATE: HY000
(ER_NEVER_USED
)
Message: Ambiguous slave modes combination. %s
In 5.5.3:
ER_SLAVE_AMBIGOUS_EXEC_MODE
was
renamed to ER_NEVER_USED
.
ER_NEVER_USED
was added in 5.5.3.
Error: 1609
SQLSTATE: HY000
(ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT
)
Message: The BINLOG statement of type `%s` was not preceded by a format description BINLOG statement.
Error: 1610
SQLSTATE: HY000
(ER_SLAVE_CORRUPT_EVENT
)
Message: Corrupted replication event was detected
Error: 1611
SQLSTATE: HY000
(ER_LOAD_DATA_INVALID_COLUMN
)
Message: Invalid column reference (%s) in LOAD DATA
Error: 1612
SQLSTATE: HY000
(ER_LOG_PURGE_NO_FILE
)
Message: Being purged log %s was not found
Error: 1613
SQLSTATE: XA106
(ER_XA_RBTIMEOUT
)
Message: XA_RBTIMEOUT: Transaction branch was rolled back: took too long
Error: 1614
SQLSTATE: XA102
(ER_XA_RBDEADLOCK
)
Message: XA_RBDEADLOCK: Transaction branch was rolled back: deadlock was detected
Error: 1615
SQLSTATE: HY000
(ER_NEED_REPREPARE
)
Message: Prepared statement needs to be re-prepared
Error: 1616
SQLSTATE: HY000
(ER_DELAYED_NOT_SUPPORTED
)
Message: DELAYED option not supported for table '%s'
Error: 1617
SQLSTATE: HY000
(WARN_NO_MASTER_INFO
)
Message: The master info structure does not exist
Error: 1618
SQLSTATE: HY000
(WARN_OPTION_IGNORED
)
Message: <%s> option ignored
Error: 1619
SQLSTATE: HY000
(WARN_PLUGIN_DELETE_BUILTIN
)
Message: Built-in plugins cannot be deleted
Error: 1620
SQLSTATE: HY000
(WARN_PLUGIN_BUSY
)
Message: Plugin is busy and will be uninstalled on shutdown
Error: 1621
SQLSTATE: HY000
(ER_VARIABLE_IS_READONLY
)
Message: %s variable '%s' is read-only. Use SET %s to assign the value
Error: 1622
SQLSTATE: HY000
(ER_WARN_ENGINE_TRANSACTION_ROLLBACK
)
Message: Storage engine %s does not support rollback for this statement. Transaction rolled back and must be restarted
Error: 1623
SQLSTATE: HY000
(ER_SLAVE_HEARTBEAT_FAILURE
)
Message: Unexpected master's heartbeat data: %s
Error: 1624
SQLSTATE: HY000
(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE
)
Message: The requested value for the heartbeat period is either negative or exceeds the maximum allowed (%s seconds).
Error: 1625
SQLSTATE: HY000
(ER_NDB_REPLICATION_SCHEMA_ERROR
)
Message: Bad schema for mysql.ndb_replication table. Message: %s
Error: 1626
SQLSTATE: HY000
(ER_CONFLICT_FN_PARSE_ERROR
)
Message: Error in parsing conflict function. Message: %s
Error: 1627
SQLSTATE: HY000
(ER_EXCEPTIONS_WRITE_ERROR
)
Message: Write to exceptions table failed. Message: %s"
Error: 1628
SQLSTATE: HY000
(ER_TOO_LONG_TABLE_COMMENT
)
Message: Comment for table '%s' is too long (max = %lu)
Error: 1629
SQLSTATE: HY000
(ER_TOO_LONG_FIELD_COMMENT
)
Message: Comment for field '%s' is too long (max = %lu)
Error: 1630
SQLSTATE: 42000
(ER_FUNC_INEXISTENT_NAME_COLLISION
)
Message: FUNCTION %s does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual
Error: 1631
SQLSTATE: HY000
(ER_DATABASE_NAME
)
Message: Database
Error: 1632
SQLSTATE: HY000
(ER_TABLE_NAME
)
Message: Table
Error: 1633
SQLSTATE: HY000
(ER_PARTITION_NAME
)
Message: Partition
Error: 1634
SQLSTATE: HY000
(ER_SUBPARTITION_NAME
)
Message: Subpartition
Error: 1635
SQLSTATE: HY000
(ER_TEMPORARY_NAME
)
Message: Temporary
Error: 1636
SQLSTATE: HY000
(ER_RENAMED_NAME
)
Message: Renamed
Error: 1637
SQLSTATE: HY000
(ER_TOO_MANY_CONCURRENT_TRXS
)
Message: Too many active concurrent transactions
Error: 1638
SQLSTATE: HY000
(WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
)
Message: Non-ASCII separator arguments are not fully supported
Error: 1639
SQLSTATE: HY000
(ER_DEBUG_SYNC_TIMEOUT
)
Message: debug sync point wait timed out
Error: 1640
SQLSTATE: HY000
(ER_DEBUG_SYNC_HIT_LIMIT
)
Message: debug sync point hit limit reached
Error: 1641
SQLSTATE: 42000
(ER_DUP_SIGNAL_SET
)
Message: Duplicate condition information item '%s'
Error: 1642
SQLSTATE: 01000
(ER_SIGNAL_WARN
)
Message: Unhandled user-defined warning condition
Error: 1643
SQLSTATE: 02000
(ER_SIGNAL_NOT_FOUND
)
Message: Unhandled user-defined not found condition
Error: 1644
SQLSTATE: HY000
(ER_SIGNAL_EXCEPTION
)
Message: Unhandled user-defined exception condition
Error: 1645
SQLSTATE: 0K000
(ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER
)
Message: RESIGNAL when handler not active
Error: 1646
SQLSTATE: HY000
(ER_SIGNAL_BAD_CONDITION_TYPE
)
Message: SIGNAL/RESIGNAL can only use a CONDITION defined with SQLSTATE
Error: 1647
SQLSTATE: HY000
(WARN_COND_ITEM_TRUNCATED
)
Message: Data truncated for condition item '%s'
Error: 1648
SQLSTATE: HY000
(ER_COND_ITEM_TOO_LONG
)
Message: Data too long for condition item '%s'
Error: 1649
SQLSTATE: HY000
(ER_UNKNOWN_LOCALE
)
Message: Unknown locale: '%s'
Error: 1650
SQLSTATE: HY000
(ER_SLAVE_IGNORE_SERVER_IDS
)
Message: The requested server id %d clashes with the slave startup option --replicate-same-server-id
Error: 1651
SQLSTATE: HY000
(ER_QUERY_CACHE_DISABLED
)
Message: Query cache is disabled; restart the server with query_cache_type=1 to enable it
Error: 1652
SQLSTATE: HY000
(ER_SAME_NAME_PARTITION_FIELD
)
Message: Duplicate partition field name '%s'
Error: 1653
SQLSTATE: HY000
(ER_PARTITION_COLUMN_LIST_ERROR
)
Message: Inconsistency in usage of column lists for partitioning
Error: 1654
SQLSTATE: HY000
(ER_WRONG_TYPE_COLUMN_VALUE_ERROR
)
Message: Partition column values of incorrect type
Error: 1655
SQLSTATE: HY000
(ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR
)
Message: Too many fields in '%s'
Error: 1656
SQLSTATE: HY000
(ER_MAXVALUE_IN_VALUES_IN
)
Message: Cannot use MAXVALUE as value in VALUES IN
Error: 1657
SQLSTATE: HY000
(ER_TOO_MANY_VALUES_ERROR
)
Message: Cannot have more than one value for this type of %s partitioning
Error: 1658
SQLSTATE: HY000
(ER_ROW_SINGLE_PARTITION_FIELD_ERROR
)
Message: Row expressions in VALUES IN only allowed for multi-field column partitioning
Error: 1659
SQLSTATE: HY000
(ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD
)
Message: Field '%s' is of a not allowed type for this type of partitioning
Error: 1660
SQLSTATE: HY000
(ER_PARTITION_FIELDS_TOO_LONG
)
Message: The total length of the partitioning fields is too large
Error: 1661
SQLSTATE: HY000
(ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE
)
Message: Cannot execute statement: impossible to write to binary log since both row-incapable engines and statement-incapable engines are involved.
ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE
was added in 5.5.3.
Error: 1662
SQLSTATE: HY000
(ER_BINLOG_ROW_MODE_AND_STMT_ENGINE
)
Message: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging.
ER_BINLOG_ROW_MODE_AND_STMT_ENGINE
was added in 5.5.3.
Error: 1663
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_AND_STMT_ENGINE
)
Message: Cannot execute statement: impossible to write to binary log since statement is unsafe, storage engine is limited to statement-based logging, and BINLOG_FORMAT = MIXED. %s
ER_BINLOG_UNSAFE_AND_STMT_ENGINE
was added in 5.5.3.
Error: 1664
SQLSTATE: HY000
(ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE
)
Message: Cannot execute statement: impossible to write to binary log since statement is in row format and at least one table uses a storage engine limited to statement-based logging.
ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE
was added in 5.5.3.
Error: 1665
SQLSTATE: HY000
(ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
)
Message: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging.%s
ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
was added in 5.5.3.
Error: 1666
SQLSTATE: HY000
(ER_BINLOG_ROW_INJECTION_AND_STMT_MODE
)
Message: Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT.
ER_BINLOG_ROW_INJECTION_AND_STMT_MODE
was added in 5.5.3.
Error: 1667
SQLSTATE: HY000
(ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE
)
Message: Cannot execute statement: impossible to write to binary log since more than one engine is involved and at least one engine is self-logging.
ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE
was added in 5.5.3.
Error: 1668
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_LIMIT
)
Message: The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
ER_BINLOG_UNSAFE_LIMIT
was added
in 5.5.3.
Error: 1669
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_INSERT_DELAYED
)
Message: The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
ER_BINLOG_UNSAFE_INSERT_DELAYED
was added in 5.5.3.
Error: 1670
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_SYSTEM_TABLE
)
Message: The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
ER_BINLOG_UNSAFE_SYSTEM_TABLE
was
added in 5.5.3.
Error: 1671
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_AUTOINC_COLUMNS
)
Message: Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
ER_BINLOG_UNSAFE_AUTOINC_COLUMNS
was added in 5.5.3.
Error: 1672
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_UDF
)
Message: Statement is unsafe because it uses a UDF which may not return the same value on the slave.
ER_BINLOG_UNSAFE_UDF
was added in
5.5.3.
Error: 1673
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_SYSTEM_VARIABLE
)
Message: Statement is unsafe because it uses a system variable that may have a different value on the slave.
ER_BINLOG_UNSAFE_SYSTEM_VARIABLE
was added in 5.5.3.
Error: 1674
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_SYSTEM_FUNCTION
)
Message: Statement is unsafe because it uses a system function that may return a different value on the slave.
ER_BINLOG_UNSAFE_SYSTEM_FUNCTION
was added in 5.5.3.
Error: 1675
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS
)
Message: Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS
was added in 5.5.3.
Error: 1676
SQLSTATE: HY000
(ER_MESSAGE_AND_STATEMENT
)
Message: %s Statement: %s
ER_MESSAGE_AND_STATEMENT
was added
in 5.5.3.
Error: 1677
SQLSTATE: HY000
(ER_SLAVE_CONVERSION_FAILED
)
Message: Column %d of table '%s.%s' cannot be converted from type '%s' to type '%s'
ER_SLAVE_CONVERSION_FAILED
was
added in 5.5.3.
Error: 1678
SQLSTATE: HY000
(ER_SLAVE_CANT_CREATE_CONVERSION
)
Message: Can't create conversion table for table '%s.%s'
ER_SLAVE_CANT_CREATE_CONVERSION
was added in 5.5.3.
Error: 1679
SQLSTATE: HY000
(ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT
)
Message: Cannot modify @@session.binlog_format inside a transaction
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT
was added in 5.5.3.
Error: 1680
SQLSTATE: HY000
(ER_PATH_LENGTH
)
Message: The path specified for %s is too long.
ER_PATH_LENGTH
was added in 5.5.3.
Error: 1681
SQLSTATE: HY000
(ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT
)
Message: '%s' is deprecated and will be removed in a future release.
ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT
was added in 5.5.3.
Error: 1682
SQLSTATE: HY000
(ER_WRONG_NATIVE_TABLE_STRUCTURE
)
Message: Native table '%s'.'%s' has the wrong structure
ER_WRONG_NATIVE_TABLE_STRUCTURE
was added in 5.5.3.
Error: 1683
SQLSTATE: HY000
(ER_WRONG_PERFSCHEMA_USAGE
)
Message: Invalid performance_schema usage.
ER_WRONG_PERFSCHEMA_USAGE
was
added in 5.5.3.
Error: 1684
SQLSTATE: HY000
(ER_WARN_I_S_SKIPPED_TABLE
)
Message: Table '%s'.'%s' was skipped since its definition is being modified by concurrent DDL statement
ER_WARN_I_S_SKIPPED_TABLE
was
added in 5.5.3.
Error: 1685
SQLSTATE: HY000
(ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT
)
Message: Cannot modify @@session.binlog_direct_non_transactional_updates inside a transaction
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT
was added in 5.5.3.
Error: 1686
SQLSTATE: HY000
(ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT
)
Message: Cannot change the binlog direct flag inside a stored function or trigger
ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT
was added in 5.5.3.
Error: 1687
SQLSTATE: 42000
(ER_SPATIAL_MUST_HAVE_GEOM_COL
)
Message: A SPATIAL index may only contain a geometrical type column
ER_SPATIAL_MUST_HAVE_GEOM_COL
was
added in 5.5.2.
Error: 1688
SQLSTATE: HY000
(ER_TOO_LONG_INDEX_COMMENT
)
Message: Comment for index '%s' is too long (max = %lu)
ER_TOO_LONG_INDEX_COMMENT
was
added in 5.5.3.
Error: 1689
SQLSTATE: HY000
(ER_LOCK_ABORTED
)
Message: Wait on a lock was aborted due to a pending exclusive lock
ER_LOCK_ABORTED
was added in
5.5.4.
Error: 1690
SQLSTATE: 22003
(ER_DATA_OUT_OF_RANGE
)
Message: %s value is out of range in '%s'
ER_DATA_OUT_OF_RANGE
was added in
5.5.5.
Error: 1691
SQLSTATE: HY000
(ER_WRONG_SPVAR_TYPE_IN_LIMIT
)
Message: A variable of a non-integer based type in LIMIT clause
ER_WRONG_SPVAR_TYPE_IN_LIMIT
was
added in 5.5.5.
Error: 1692
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE
)
Message: Mixing self-logging and non-self-logging engines in a statement is unsafe.
ER_BINLOG_UNSAFE_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE
was added in 5.5.5.
Error: 1693
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_MIXED_STATEMENT
)
Message: Statement accesses nontransactional table as well as transactional or temporary table, and writes to any of them.
ER_BINLOG_UNSAFE_MIXED_STATEMENT
was added in 5.5.5.
Error: 1694
SQLSTATE: HY000
(ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN
)
Message: Cannot modify @@session.sql_log_bin inside a transaction
ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_SQL_LOG_BIN
was added in 5.5.5.
Error: 1695
SQLSTATE: HY000
(ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN
)
Message: Cannot change the sql_log_bin inside a stored function or trigger
ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN
was added in 5.5.5.
Error: 1696
SQLSTATE: HY000
(ER_FAILED_READ_FROM_PAR_FILE
)
Message: Failed to read from the .par file
ER_FAILED_READ_FROM_PAR_FILE
was
added in 5.5.5.
Error: 1697
SQLSTATE: HY000
(ER_VALUES_IS_NOT_INT_TYPE_ERROR
)
Message: VALUES value for partition '%s' must have type INT
ER_VALUES_IS_NOT_INT_TYPE_ERROR
was added in 5.5.7.
Error: 1698
SQLSTATE: 28000
(ER_ACCESS_DENIED_NO_PASSWORD_ERROR
)
Message: Access denied for user '%s'@'%s'
ER_ACCESS_DENIED_NO_PASSWORD_ERROR
was added in 5.5.7.
Error: 1699
SQLSTATE: HY000
(ER_SET_PASSWORD_AUTH_PLUGIN
)
Message: SET PASSWORD has no significance for users authenticating via plugins
ER_SET_PASSWORD_AUTH_PLUGIN
was
added in 5.5.7.
Error: 1700
SQLSTATE: HY000
(ER_GRANT_PLUGIN_USER_EXISTS
)
Message: GRANT with IDENTIFIED WITH is illegal because the user %-.*s already exists
ER_GRANT_PLUGIN_USER_EXISTS
was
added in 5.5.7.
Error: 1701
SQLSTATE: 42000
(ER_TRUNCATE_ILLEGAL_FK
)
Message: Cannot truncate a table referenced in a foreign key constraint (%s)
ER_TRUNCATE_ILLEGAL_FK
was added
in 5.5.7.
Error: 1702
SQLSTATE: HY000
(ER_PLUGIN_IS_PERMANENT
)
Message: Plugin '%s' is force_plus_permanent and can not be unloaded
ER_PLUGIN_IS_PERMANENT
was added
in 5.5.7.
Error: 1703
SQLSTATE: HY000
(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN
)
Message: The requested value for the heartbeat period is less than 1 millisecond. The value is reset to 0, meaning that heartbeating will effectively be disabled.
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN
was added in 5.5.7.
Error: 1704
SQLSTATE: HY000
(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX
)
Message: The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout.
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX
was added in 5.5.7.
Error: 1705
SQLSTATE: HY000
(ER_STMT_CACHE_FULL
)
Message: Multi-row statements required more than 'max_binlog_stmt_cache_size' bytes of storage; increase this mysqld variable and try again
ER_STMT_CACHE_FULL
was added in
5.5.9.
Error: 1706
SQLSTATE: HY000
(ER_MULTI_UPDATE_KEY_CONFLICT
)
Message: Primary key/partition key update is not allowed since the table is updated both as '%s' and '%s'.
ER_MULTI_UPDATE_KEY_CONFLICT
was
added in 5.5.11.
Error: 1707
SQLSTATE: HY000
(ER_TABLE_NEEDS_REBUILD
)
Message: Table rebuild required. Please do "ALTER TABLE `%s` FORCE" or dump/reload to fix it!
ER_TABLE_NEEDS_REBUILD
was added
in 5.5.11.
Error: 1708
SQLSTATE: HY000
(WARN_OPTION_BELOW_LIMIT
)
Message: The value of '%s' should be no less than the value of '%s'
WARN_OPTION_BELOW_LIMIT
was added
in 5.5.12.
Error: 1709
SQLSTATE: HY000
(ER_INDEX_COLUMN_TOO_LONG
)
Message: Index column size too large. The maximum column size is %lu bytes.
ER_INDEX_COLUMN_TOO_LONG
was added
in 5.5.14.
Error: 1710
SQLSTATE: HY000
(ER_ERROR_IN_TRIGGER_BODY
)
Message: Trigger '%s' has an error in its body: '%s'
ER_ERROR_IN_TRIGGER_BODY
was added
in 5.5.15.
Error: 1711
SQLSTATE: HY000
(ER_ERROR_IN_UNKNOWN_TRIGGER_BODY
)
Message: Unknown trigger has an error in its body: '%s'
ER_ERROR_IN_UNKNOWN_TRIGGER_BODY
was added in 5.5.15.
Error: 1712
SQLSTATE: HY000
(ER_INDEX_CORRUPT
)
Message: Index %s is corrupted
ER_INDEX_CORRUPT
was added in
5.5.17.
Error: 1713
SQLSTATE: HY000
(ER_UNDO_RECORD_TOO_BIG
)
Message: Undo log record is too big.
ER_UNDO_RECORD_TOO_BIG
was added
in 5.5.17.
Error: 1714
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT
)
Message: INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT
was added in 5.5.18.
Error: 1715
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE
)
Message: INSERT... SELECT... ON DUPLICATE KEY UPDATE is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are updated. This order cannot be predicted and may differ on master and the slave.
ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE
was added in 5.5.18.
Error: 1716
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_REPLACE_SELECT
)
Message: REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave.
ER_BINLOG_UNSAFE_REPLACE_SELECT
was added in 5.5.18.
Error: 1717
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT
)
Message: CREATE... IGNORE SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT
was added in 5.5.18.
Error: 1718
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT
)
Message: CREATE... REPLACE SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave.
ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT
was added in 5.5.18.
Error: 1719
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_UPDATE_IGNORE
)
Message: UPDATE IGNORE is unsafe because the order in which rows are updated determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
ER_BINLOG_UNSAFE_UPDATE_IGNORE
was
added in 5.5.18.
Error: 1720
SQLSTATE: HY000
(ER_PLUGIN_NO_UNINSTALL
)
Message: Plugin '%s' is marked as not dynamically uninstallable. You have to stop the server to uninstall it.
ER_PLUGIN_NO_UNINSTALL
was added
in 5.5.16.
Error: 1721
SQLSTATE: HY000
(ER_PLUGIN_NO_INSTALL
)
Message: Plugin '%s' is marked as not dynamically installable. You have to stop the server to install it.
ER_PLUGIN_NO_INSTALL
was added in
5.5.16.
Error: 1722
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT
)
Message: Statements writing to a table with an auto-increment column after selecting from another table are unsafe because the order in which rows are retrieved determines what (if any) rows will be written. This order cannot be predicted and may differ on master and the slave.
ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT
was added in 5.5.22.
Error: 1723
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC
)
Message: CREATE TABLE... SELECT... on a table with an auto-increment column is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are inserted. This order cannot be predicted and may differ on master and the slave.
ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC
was added in 5.5.22.
Error: 1724
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_INSERT_TWO_KEYS
)
Message: INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe
ER_BINLOG_UNSAFE_INSERT_TWO_KEYS
was added in 5.5.24.
Error: 1725
SQLSTATE: HY000
(ER_TABLE_IN_FK_CHECK
)
Message: Table is being used in foreign key check.
ER_TABLE_IN_FK_CHECK
was added in
5.5.24.
Error: 1726
SQLSTATE: HY000
(ER_UNSUPPORTED_ENGINE
)
Message: Storage engine '%s' does not support system tables. [%s.%s]
ER_UNSUPPORTED_ENGINE
was added in
5.5.24.
Error: 1727
SQLSTATE: HY000
(ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST
)
Message: INSERT into autoincrement field which is not the first part in the composed primary key is unsafe.
ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST
was added in 5.5.25.
Client error information comes from the following source files:
The Error values and the symbols in parentheses correspond to
definitions in the include/errmsg.h
MySQL
source file.
The Message values correspond to the error messages that are
listed in the libmysql/errmsg.c
file.
%d
and %s
represent
numbers and strings, respectively, that are substituted into
the messages when they are displayed.
Because updates are frequent, it is possible that those files will contain additional error information not listed here.
Error: 2000
(CR_UNKNOWN_ERROR
)
Message: Unknown MySQL error
Error: 2001
(CR_SOCKET_CREATE_ERROR
)
Message: Can't create UNIX socket (%d)
Error: 2002
(CR_CONNECTION_ERROR
)
Message: Can't connect to local MySQL server through socket '%s' (%d)
Error: 2003
(CR_CONN_HOST_ERROR
)
Message: Can't connect to MySQL server on '%s' (%d)
Error: 2004
(CR_IPSOCK_ERROR
)
Message: Can't create TCP/IP socket (%d)
Error: 2005
(CR_UNKNOWN_HOST
)
Message: Unknown MySQL server host '%s' (%d)
Error: 2006
(CR_SERVER_GONE_ERROR
)
Message: MySQL server has gone away
Error: 2007
(CR_VERSION_ERROR
)
Message: Protocol mismatch; server version = %d, client version = %d
Error: 2008
(CR_OUT_OF_MEMORY
)
Message: MySQL client ran out of memory
Error: 2009
(CR_WRONG_HOST_INFO
)
Message: Wrong host info
Error: 2010
(CR_LOCALHOST_CONNECTION
)
Message: Localhost via UNIX socket
Error: 2011
(CR_TCP_CONNECTION
)
Message: %s via TCP/IP
Error: 2012
(CR_SERVER_HANDSHAKE_ERR
)
Message: Error in server handshake
Error: 2013
(CR_SERVER_LOST
)
Message: Lost connection to MySQL server during query
Error: 2014
(CR_COMMANDS_OUT_OF_SYNC
)
Message: Commands out of sync; you can't run this command now
Error: 2015
(CR_NAMEDPIPE_CONNECTION
)
Message: Named pipe: %s
Error: 2016
(CR_NAMEDPIPEWAIT_ERROR
)
Message: Can't wait for named pipe to host: %s pipe: %s (%lu)
Error: 2017
(CR_NAMEDPIPEOPEN_ERROR
)
Message: Can't open named pipe to host: %s pipe: %s (%lu)
Error: 2018
(CR_NAMEDPIPESETSTATE_ERROR
)
Message: Can't set state of named pipe to host: %s pipe: %s (%lu)
Error: 2019
(CR_CANT_READ_CHARSET
)
Message: Can't initialize character set %s (path: %s)
Error: 2020
(CR_NET_PACKET_TOO_LARGE
)
Message: Got packet bigger than 'max_allowed_packet' bytes
Error: 2021
(CR_EMBEDDED_CONNECTION
)
Message: Embedded server
Error: 2022
(CR_PROBE_SLAVE_STATUS
)
Message: Error on SHOW SLAVE STATUS:
Error: 2023
(CR_PROBE_SLAVE_HOSTS
)
Message: Error on SHOW SLAVE HOSTS:
Error: 2024
(CR_PROBE_SLAVE_CONNECT
)
Message: Error connecting to slave:
Error: 2025
(CR_PROBE_MASTER_CONNECT
)
Message: Error connecting to master:
Error: 2026
(CR_SSL_CONNECTION_ERROR
)
Message: SSL connection error: %s
Error: 2027
(CR_MALFORMED_PACKET
)
Message: Malformed packet
Error: 2028
(CR_WRONG_LICENSE
)
Message: This client library is licensed only for use with MySQL servers having '%s' license
Error: 2029
(CR_NULL_POINTER
)
Message: Invalid use of null pointer
Error: 2030
(CR_NO_PREPARE_STMT
)
Message: Statement not prepared
Error: 2031
(CR_PARAMS_NOT_BOUND
)
Message: No data supplied for parameters in prepared statement
Error: 2032
(CR_DATA_TRUNCATED
)
Message: Data truncated
Error: 2033
(CR_NO_PARAMETERS_EXISTS
)
Message: No parameters exist in the statement
Error: 2034
(CR_INVALID_PARAMETER_NO
)
Message: Invalid parameter number
Error: 2035
(CR_INVALID_BUFFER_USE
)
Message: Can't send long data for non-string/non-binary data types (parameter: %d)
Error: 2036
(CR_UNSUPPORTED_PARAM_TYPE
)
Message: Using unsupported buffer type: %d (parameter: %d)
Error: 2037
(CR_SHARED_MEMORY_CONNECTION
)
Message: Shared memory: %s
Error: 2038
(CR_SHARED_MEMORY_CONNECT_REQUEST_ERROR
)
Message: Can't open shared memory; client could not create request event (%lu)
Error: 2039
(CR_SHARED_MEMORY_CONNECT_ANSWER_ERROR
)
Message: Can't open shared memory; no answer event received from server (%lu)
Error: 2040
(CR_SHARED_MEMORY_CONNECT_FILE_MAP_ERROR
)
Message: Can't open shared memory; server could not allocate file mapping (%lu)
Error: 2041
(CR_SHARED_MEMORY_CONNECT_MAP_ERROR
)
Message: Can't open shared memory; server could not get pointer to file mapping (%lu)
Error: 2042
(CR_SHARED_MEMORY_FILE_MAP_ERROR
)
Message: Can't open shared memory; client could not allocate file mapping (%lu)
Error: 2043
(CR_SHARED_MEMORY_MAP_ERROR
)
Message: Can't open shared memory; client could not get pointer to file mapping (%lu)
Error: 2044
(CR_SHARED_MEMORY_EVENT_ERROR
)
Message: Can't open shared memory; client could not create %s event (%lu)
Error: 2045
(CR_SHARED_MEMORY_CONNECT_ABANDONED_ERROR
)
Message: Can't open shared memory; no answer from server (%lu)
Error: 2046
(CR_SHARED_MEMORY_CONNECT_SET_ERROR
)
Message: Can't open shared memory; cannot send request event to server (%lu)
Error: 2047
(CR_CONN_UNKNOW_PROTOCOL
)
Message: Wrong or unknown protocol
Error: 2048
(CR_INVALID_CONN_HANDLE
)
Message: Invalid connection handle
Error: 2049
(CR_SECURE_AUTH
)
Message: Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
Error: 2050
(CR_FETCH_CANCELED
)
Message: Row retrieval was canceled by mysql_stmt_close() call
Error: 2051
(CR_NO_DATA
)
Message: Attempt to read column without prior row fetch
Error: 2052
(CR_NO_STMT_METADATA
)
Message: Prepared statement contains no metadata
Error: 2053
(CR_NO_RESULT_SET
)
Message: Attempt to read a row while there is no result set associated with the statement
Error: 2054
(CR_NOT_IMPLEMENTED
)
Message: This feature is not implemented yet
Error: 2055
(CR_SERVER_LOST_EXTENDED
)
Message: Lost connection to MySQL server at '%s', system error: %d
Error: 2056
(CR_STMT_CLOSED
)
Message: Statement closed indirectly because of a preceeding %s() call
Error: 2057
(CR_NEW_STMT_METADATA
)
Message: The number of columns in the result set differs from the number of bound buffers. You must reset the statement, rebind the result set columns, and execute the statement again
Error: 2058
(CR_ALREADY_CONNECTED
)
Message: This handle is already connected. Use a separate handle for each connection.
Error: 2059
(CR_AUTH_PLUGIN_CANNOT_LOAD
)
Message: Authentication plugin '%s' cannot be loaded: %s
CR_AUTH_PLUGIN_CANNOT_LOAD
was
added in 5.5.7.
This section lists some common problems and error messages that you may encounter. It describes how to determine the causes of the problems and what to do to solve them.
When you run into a problem, the first thing you should do is to find out which program or piece of equipment is causing it:
If you have one of the following symptoms, then it is probably a hardware problems (such as memory, motherboard, CPU, or hard disk) or kernel problem:
The keyboard does not work. This can normally be checked by pressing the Caps Lock key. If the Caps Lock light does not change, you have to replace your keyboard. (Before doing this, you should try to restart your computer and check all cables to the keyboard.)
The mouse pointer does not move.
The machine does not answer to a remote machine's pings.
Other programs that are not related to MySQL do not behave correctly.
Your system restarted unexpectedly. (A faulty user-level program should never be able to take down your system.)
In this case, you should start by checking all your cables
and run some diagnostic tool to check your hardware! You
should also check whether there are any patches, updates, or
service packs for your operating system that could likely
solve your problem. Check also that all your libraries (such
as glibc
) are up to date.
It is always good to use a machine with ECC memory to discover memory problems early.
If your keyboard is locked up, you may be able to recover by
logging in to your machine from another machine and
executing kbd_mode -a
.
Please examine your system log file
(/var/log/messages
or similar) for
reasons for your problem. If you think the problem is in
MySQL, you should also examine MySQL's log files. See
Section 5.2, “MySQL Server Logs”.
If you do not think you have hardware problems, you should try to find out which program is causing problems. Try using top, ps, Task Manager, or some similar program, to check which program is taking all CPU or is locking the machine.
Use top, df, or a similar program to check whether you are out of memory, disk space, file descriptors, or some other critical resource.
If the problem is some runaway process, you can always try to kill it. If it does not want to die, there is probably a bug in the operating system.
If after you have examined all other possibilities and you have concluded that the MySQL server or a MySQL client is causing the problem, it is time to create a bug report for our mailing list or our support team. In the bug report, try to give a very detailed description of how the system is behaving and what you think is happening. You should also state why you think that MySQL is causing the problem. Take into consideration all the situations in this chapter. State any problems exactly how they appear when you examine your system. Use the “copy and paste” method for any output and error messages from programs and log files.
Try to describe in detail which program is not working and all symptoms you see. We have in the past received many bug reports that state only “the system does not work.” This provides us with no information about what could be the problem.
If a program fails, it is always useful to know the following information:
Has the program in question made a segmentation fault (did it dump core)?
Is the program taking up all available CPU time? Check with top. Let the program run for a while, it may simply be evaluating something computationally intensive.
If the mysqld server is causing problems, can you get any response from it with mysqladmin -u root ping or mysqladmin -u root processlist?
What does a client program say when you try to connect to the MySQL server? (Try with mysql, for example.) Does the client jam? Do you get any output from the program?
When sending a bug report, you should follow the outline described in Section 1.6, “How to Report Bugs or Problems”.
This section lists some errors that users frequently encounter when running MySQL programs. Although the problems show up when you try to run client programs, the solutions to many of the problems involves changing the configuration of the MySQL server.
An Access denied
error can have many
causes. Often the problem is related to the MySQL accounts
that the server permits client programs to use when
connecting. See Section 6.2, “The MySQL Access Privilege System”, and
Section 6.2.7, “Troubleshooting Problems Connecting to MySQL”.
A MySQL client on Unix can connect to the
mysqld server in two different ways: By
using a Unix socket file to connect through a file in the file
system (default /tmp/mysql.sock
), or by
using TCP/IP, which connects through a port number. A Unix
socket file connection is faster than TCP/IP, but can be used
only when connecting to a server on the same computer. A Unix
socket file is used if you do not specify a host name or if
you specify the special host name
localhost
.
If the MySQL server is running on Windows, you can connect
using TCP/IP. If the server is started with the
--enable-named-pipe
option, you
can also connect with named pipes if you run the client on the
host where the server is running. The name of the named pipe
is MySQL
by default. If you do not give a
host name when connecting to mysqld, a
MySQL client first tries to connect to the named pipe. If that
does not work, it connects to the TCP/IP port. You can force
the use of named pipes on Windows by using
.
as the host name.
The error (2002) Can't connect to ...
normally means that there is no MySQL server running on the
system or that you are using an incorrect Unix socket file
name or TCP/IP port number when trying to connect to the
server. You should also check that the TCP/IP port you are
using has not been blocked by a firewall or port blocking
service.
The error (2003) Can't connect to MySQL server on
'
indicates that the network connection has been refused. You
should check that there is a MySQL server running, that it has
network connections enabled, and that the network port you
specified is the one configured on the server.
server
' (10061)
Start by checking whether there is a process named mysqld running on your server host. (Use ps xa | grep mysqld on Unix or the Task Manager on Windows.) If there is no such process, you should start the server. See Section 2.10.2, “Starting the Server”.
If a mysqld process is running, you can
check it by trying the following commands. The port number or
Unix socket file name might be different in your setup.
host_ip
represents the IP address of the
machine where the server is running.
shell>mysqladmin version
shell>mysqladmin variables
shell>mysqladmin -h `hostname` version variables
shell>mysqladmin -h `hostname` --port=3306 version
shell>mysqladmin -h host_ip version
shell>mysqladmin --protocol=SOCKET --socket=/tmp/mysql.sock version
Note the use of backticks rather than forward quotation marks
with the hostname command; these cause the
output of hostname (that is, the current
host name) to be substituted into the
mysqladmin command. If you have no
hostname command or are running on Windows,
you can manually type the host name of your machine (without
backticks) following the -h
option. You can
also try -h 127.0.0.1
to connect with
TCP/IP to the local host.
Make sure that the server has not been configured to ignore
network connections or (if you are attempting to connect
remotely) that it has not been configured to listen only
locally on its network interfaces. If the server was started
with --skip-networking
, it will
not accept TCP/IP connections at all. If the server was
started with
--bind-address=127.0.0.1
, it
will listen for TCP/IP connections only locally on the
loopback interface and will not accept remote connections.
Check to make sure that there is no firewall blocking access to MySQL. Your firewall may be configured on the basis of the application being executed, or the port number used by MySQL for communication (3306 by default). Under Linux or Unix, check your IP tables (or similar) configuration to ensure that the port has not been blocked. Under Windows, applications such as ZoneAlarm or the Windows XP personal firewall may need to be configured not to block the MySQL port.
Here are some reasons the Can't connect to local
MySQL server
error might occur:
mysqld is not running on the local host. Check your operating system's process list to ensure the mysqld process is present.
You're running a MySQL server on Windows with many TCP/IP connections to it. If you're experiencing that quite often your clients get that error, you can find a workaround here: Section B.5.2.2.1, “Connection to MySQL Server Failing on Windows”.
Someone has removed the Unix socket file that
mysqld uses
(/tmp/mysql.sock
by default). For
example, you might have a cron job that
removes old files from the /tmp
directory. You can always run mysqladmin
version to check whether the Unix socket file
that mysqladmin is trying to use really
exists. The fix in this case is to change the
cron job to not remove
mysql.sock
or to place the socket
file somewhere else. See
Section B.5.3.6, “How to Protect or Change the MySQL Unix Socket File”.
You have started the mysqld server with
the
--socket=/path/to/socket
option, but forgotten to tell client programs the new name
of the socket file. If you change the socket path name for
the server, you must also notify the MySQL clients. You
can do this by providing the same
--socket
option when you
run client programs. You also need to ensure that clients
have permission to access the
mysql.sock
file. To find out where
the socket file is, you can do:
shell> netstat -ln | grep mysql
See Section B.5.3.6, “How to Protect or Change the MySQL Unix Socket File”.
You are using Linux and one server thread has died (dumped core). In this case, you must kill the other mysqld threads (for example, with kill or with the mysql_zap script) before you can restart the MySQL server. See Section B.5.3.3, “What to Do If MySQL Keeps Crashing”.
The server or client program might not have the proper
access privileges for the directory that holds the Unix
socket file or the socket file itself. In this case, you
must either change the access privileges for the directory
or socket file so that the server and clients can access
them, or restart mysqld with a
--socket
option that
specifies a socket file name in a directory where the
server can create it and where client programs can access
it.
If you get the error message Can't connect to MySQL
server on some_host
, you can try the following
things to find out what the problem is:
Check whether the server is running on that host by
executing telnet some_host 3306
and
pressing the Enter key a couple of times. (3306 is the
default MySQL port number. Change the value if your server
is listening to a different port.) If there is a MySQL
server running and listening to the port, you should get a
response that includes the server's version number. If you
get an error such as telnet: Unable to connect to
remote host: Connection refused
, then there is
no server running on the given port.
If the server is running on the local host, try using
mysqladmin -h localhost variables to
connect using the Unix socket file. Verify the TCP/IP port
number that the server is configured to listen to (it is
the value of the port
variable.)
If you are running under Linux and Security-Enhanced Linux
(SELinux) is enabled, make sure you have disabled SELinux
protection for the mysqld
process.
When you're running a MySQL server on Windows with many
TCP/IP connections to it, and you're experiencing that quite
often your clients get a Can't connect to MySQL
server
error, the reason might be that Windows
does not allow for enough ephemeral (short-lived) ports to
serve those connections.
The purpose of TIME_WAIT
is to keep a
connection accepting packets even after the connection has
been closed. This is because Internet routing can cause a
packet to take a slow route to its destination and it may
arrive after both sides have agreed to close. If the port is
in use for a new connection, that packet from the old
connection could break the protocol or compromise personal
information from the original connection. The
TIME_WAIT
delay prevents this by ensuring
that the port cannot be reused until after some time has
been permitted for those delayed packets to arrive.
It is safe to reduce TIME_WAIT
greatly on
LAN connections because there is little chance of packets
arriving at very long delays, as they could through the
Internet with its comparatively large distances and
latencies.
Windows permits ephemeral (short-lived) TCP ports to the
user. After any port is closed it will remain in a
TIME_WAIT
status for 120 seconds. The
port will not be available again until this time expires.
The default range of port numbers depends on the version of
Windows, with a more limited number of ports in older
versions:
Windows through Server 2003: Ports in range 1025–5000
Windows Vista, Server 2008, and newer: Ports in range 49152–65535
With a small stack of available TCP ports (5000) and a high
number of TCP ports being open and closed over a short
period of time along with the TIME_WAIT
status you have a good chance for running out of ports.
There are two ways to address this problem:
Reduce the number of TCP ports consumed quickly by investigating connection pooling or persistent connections where possible
Tune some settings in the Windows registry (see below)
The following procedure involves modifying the Windows registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore it if a problem occurs. For information about how to back up, restore, and edit the registry, view the following article in the Microsoft Knowledge Base: http://support.microsoft.com/kb/256986/EN-US/.
Start Registry Editor
(Regedt32.exe
).
Locate the following key in the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
On the Edit
menu, click Add
Value
, and then add the following registry
value:
Value Name: MaxUserPort Data Type: REG_DWORD Value: 65534
This sets the number of ephemeral ports available to any user. The valid range is between 5000 and 65534 (decimal). The default value is 0x1388 (5000 decimal).
On the Edit
menu, click Add
Value
, and then add the following registry
value:
Value Name: TcpTimedWaitDelay Data Type: REG_DWORD Value: 30
This sets the number of seconds to hold a TCP port
connection in TIME_WAIT
state before
closing. The valid range is between 30 and 300 decimal,
although you may wish to check with Microsoft for the
latest permitted values. The default value is 0x78 (120
decimal).
Quit Registry Editor.
Reboot the machine.
Note: Undoing the above should be as simple as deleting the registry entries you've created.
There are three likely causes for this error message.
Usually it indicates network connectivity trouble and you should check the condition of your network if this error occurs frequently. If the error message includes “during query,” this is probably the case you are experiencing.
Sometimes the “during query” form happens when
millions of rows are being sent as part of one or more
queries. If you know that this is happening, you should try
increasing net_read_timeout
from its default of 30 seconds to 60 seconds or longer,
sufficient for the data transfer to complete.
More rarely, it can happen when the client is attempting the
initial connection to the server. In this case, if your
connect_timeout
value is set
to only a few seconds, you may be able to resolve the problem
by increasing it to ten seconds, perhaps more if you have a
very long distance or slow connection. You can determine
whether you are experiencing this more uncommon cause by using
SHOW GLOBAL STATUS LIKE 'Aborted_connects'
.
It will increase by one for each initial connection attempt
that the server aborts. You may see “reading
authorization packet” as part of the error message; if
so, that also suggests that this is the solution that you
need.
If the cause is none of those just described, you may be
experiencing a problem with
BLOB
values that are larger
than max_allowed_packet
,
which can cause this error with some clients. Sometime you may
see an ER_NET_PACKET_TOO_LARGE
error, and that confirms that you need to increase
max_allowed_packet
.
The current implementation of the authentication protocol uses a password hashing algorithm that is incompatible with that used by older (pre-4.1) clients. Attempts to connect to a 4.1 or newer server with an older client may fail with the following message:
shell> mysql
Client does not support authentication protocol requested
by server; consider upgrading MySQL client
To deal with this problem, the preferred solution is to upgrade all client programs to use a 4.1.1 or newer client library. If that is not possible, use one of the following approaches:
To connect to the server with a pre-4.1 client program, use an account that still has a pre-4.1-style password.
Reset the password to pre-4.1 style for each user that
needs to use a pre-4.1 client program. This can be done
using the SET PASSWORD
statement and the
OLD_PASSWORD()
function:
mysql>SET PASSWORD FOR
->'
some_user
'@'some_host
' = OLD_PASSWORD('new_password
');
Substitute the password you want to use for
“new_password
” in
the preceding example. MySQL cannot tell you what the
original password was, so you'll need to pick a new one.
Tell the server to use the older password hashing algorithm by default:
Start mysqld with the
old_passwords
system
variable set to 1.
Assign an old-format password to each account that has had its password updated to the longer 4.1 format. You can identify these accounts with the following query:
mysql>SELECT Host, User, Password FROM mysql.user
->WHERE LENGTH(Password) > 16;
For each account record displayed by the query, use
the Host
and
User
values and assign a password
using one of the methods described previously.
The Client does not support authentication
protocol
error also can occur if multiple versions
of MySQL are installed but client programs are dynamically
linked and link to an older library. Make sure that clients
use the most recent library version with which they are
compatible. The procedure to do this will depend on your
system.
The PHP mysql
extension does not support
the authentication protocol in MySQL 4.1.1 and higher. This
is true regardless of the PHP version being used. If you
wish to use the mysql
extension with
MySQL 4.1 or newer, you may need to follow one of the
options discussed above for configuring MySQL to work with
old clients. The mysqli
extension (stands
for "MySQL, Improved"; added in PHP 5) is compatible with
the improved password hashing employed in MySQL 4.1 and
higher, and no special configuration of MySQL need be done
to use this MySQL client library. For more information about
the mysqli
extension, see
http://php.net/mysqli.
For additional background on password hashing and authentication, see Section 6.1.2.4, “Password Hashing in MySQL”.
MySQL client programs prompt for a password when invoked with
a --password
or
-p
option that has no following password
value:
shell> mysql -u user_name
-p
Enter password:
On some systems, you may find that your password works when
specified in an option file or on the command line, but not
when you enter it interactively at the Enter
password:
prompt. This occurs when the library
provided by the system to read passwords limits password
values to a small number of characters (typically eight). That
is a problem with the system library, not with MySQL. To work
around it, change your MySQL password to a value that is eight
or fewer characters long, or put your password in an option
file.
If the following error occurs, it means that mysqld has received many connection requests from the given host that were interrupted in the middle:
Host 'host_name
' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'
The value of the
max_connect_errors
system
variable determines how many successive interrupted connection
requests are permitted. (See
Section 5.1.4, “Server System Variables”.) After
max_connect_errors
failed
requests without a successful connection,
mysqld assumes that something is wrong (for
example, that someone is trying to break in), and blocks the
host from further connections until you issue a
FLUSH HOSTS
statement or execute a mysqladmin
flush-hosts command.
By default, mysqld blocks a host after 10
connection errors. You can adjust the value by setting
max_connect_errors
at server
startup:
shell> mysqld_safe --max_connect_errors=10000 &
The value can also be set at runtime:
mysql> SET GLOBAL max_connect_errors=10000;
If you get the Host
'
error message for a given host, you should first verify that
there is nothing wrong with TCP/IP connections from that host.
If you are having network problems, it does you no good to
increase the value of the
host_name
' is blockedmax_connect_errors
variable.
If you get a Too many connections
error
when you try to connect to the mysqld
server, this means that all available connections are in use
by other clients.
The number of connections permitted is controlled by the
max_connections
system
variable. The default value is 151 to improve performance when
MySQL is used with the Apache Web server. (Previously, the
default was 100.) If you need to support more connections, you
should set a larger value for this variable.
mysqld actually permits
max_connections+1
clients to connect. The extra connection is reserved for use
by accounts that have the SUPER
privilege. By granting the
SUPER
privilege to
administrators and not to normal users (who should not need
it), an administrator can connect to the server and use
SHOW PROCESSLIST
to diagnose
problems even if the maximum number of unprivileged clients
are connected. See Section 13.7.5.30, “SHOW PROCESSLIST Syntax”.
The maximum number of connections MySQL can support depends on the quality of the thread library on a given platform, the amount of RAM available, how much RAM is used for each connection, the workload from each connection, and the desired response time. Linux or Solaris should be able to support at 500 to 1000 simultaneous connections routinely and as many as 10,000 connections if you have many gigabytes of RAM available and the workload from each is low or the response time target undemanding. Windows is limited to (open tables × 2 + open connections) < 2048 due to the Posix compatibility layer used on that platform.
Increasing open-files-limit
may
be necessary. Also see Section 2.5, “Installing MySQL on Linux”,
for how to raise the operating system limit on how many
handles can be used by MySQL.
If you issue a query using the mysql client program and receive an error like the following one, it means that mysql does not have enough memory to store the entire query result:
mysql: Out of memory at line 42, 'malloc.c' mysql: needed 8136 byte (8k), memory in use: 12481367 bytes (12189k) ERROR 2008: MySQL client ran out of memory
To remedy the problem, first check whether your query is
correct. Is it reasonable that it should return so many rows?
If not, correct the query and try again. Otherwise, you can
invoke mysql with the
--quick
option. This causes it
to use the mysql_use_result()
C API function to retrieve the result set, which places less
of a load on the client (but more on the server).
This section also covers the related Lost connection
to server during query
error.
The most common reason for the MySQL server has gone
away
error is that the server timed out and closed
the connection. In this case, you normally get one of the
following error codes (which one you get is operating
system-dependent).
Error Code | Description |
---|---|
CR_SERVER_GONE_ERROR | The client couldn't send a question to the server. |
CR_SERVER_LOST | The client didn't get an error when writing to the server, but it didn't get a full answer (or any answer) to the question. |
By default, the server closes the connection after eight hours
if nothing has happened. You can change the time limit by
setting the wait_timeout
variable when you start mysqld. See
Section 5.1.4, “Server System Variables”.
If you have a script, you just have to issue the query again
for the client to do an automatic reconnection. This assumes
that you have automatic reconnection in the client enabled
(which is the default for the mysql
command-line client).
Some other common reasons for the MySQL server has
gone away
error are:
You (or the db administrator) has killed the running
thread with a KILL
statement or a mysqladmin kill command.
You tried to run a query after closing the connection to the server. This indicates a logic error in the application that should be corrected.
A client application running on a different host does not have the necessary privileges to connect to the MySQL server from that host.
You got a timeout from the TCP/IP connection on the client
side. This may happen if you have been using the commands:
mysql_options(...,
MYSQL_OPT_READ_TIMEOUT,...)
or
mysql_options(...,
MYSQL_OPT_WRITE_TIMEOUT,...)
. In this case
increasing the timeout may help solve the problem.
You have encountered a timeout on the server side and the
automatic reconnection in the client is disabled (the
reconnect
flag in the
MYSQL
structure is equal to 0).
You are using a Windows client and the server had dropped
the connection (probably because
wait_timeout
expired)
before the command was issued.
The problem on Windows is that in some cases MySQL does not get an error from the OS when writing to the TCP/IP connection to the server, but instead gets the error when trying to read the answer from the connection.
The solution to this is to either do a
mysql_ping()
on the
connection if there has been a long time since the last
query (this is what Connector/ODBC does) or set
wait_timeout
on the
mysqld server so high that it in
practice never times out.
You can also get these errors if you send a query to the
server that is incorrect or too large. If
mysqld receives a packet that is too
large or out of order, it assumes that something has gone
wrong with the client and closes the connection. If you
need big queries (for example, if you are working with big
BLOB
columns), you can
increase the query limit by setting the server's
max_allowed_packet
variable, which has a default value of 1MB. You may also
need to increase the maximum packet size on the client
end. More information on setting the packet size is given
in Section B.5.2.10, “Packet Too Large”.
An INSERT
or
REPLACE
statement that
inserts a great many rows can also cause these sorts of
errors. Either one of these statements sends a single
request to the server irrespective of the number of rows
to be inserted; thus, you can often avoid the error by
reducing the number of rows sent per
INSERT
or
REPLACE
.
You also get a lost connection if you are sending a packet 16MB or larger if your client is older than 4.0.8 and your server is 4.0.8 and above, or the other way around.
It is also possible to see this error if host name lookups fail (for example, if the DNS server on which your server or network relies goes down). This is because MySQL is dependent on the host system for name resolution, but has no way of knowing whether it is working—from MySQL's point of view the problem is indistinguishable from any other network timeout.
You may also see the MySQL server has gone
away
error if MySQL is started with the
--skip-networking
option.
Another networking issue that can cause this error occurs if the MySQL port (default 3306) is blocked by your firewall, thus preventing any connections at all to the MySQL server.
You can also encounter this error with applications that fork child processes, all of which try to use the same connection to the MySQL server. This can be avoided by using a separate connection for each child process.
You have encountered a bug where the server died while executing the query.
You can check whether the MySQL server died and restarted by executing mysqladmin version and examining the server's uptime. If the client connection was broken because mysqld crashed and restarted, you should concentrate on finding the reason for the crash. Start by checking whether issuing the query again kills the server again. See Section B.5.3.3, “What to Do If MySQL Keeps Crashing”.
You can get more information about the lost connections by
starting mysqld with the
--log-warnings=2
option. This
logs some of the disconnected errors in the
hostname.err
file. See
Section 5.2.2, “The Error Log”.
If you want to create a bug report regarding this problem, be sure that you include the following information:
Indicate whether the MySQL server died. You can find information about this in the server error log. See Section B.5.3.3, “What to Do If MySQL Keeps Crashing”.
If a specific query kills mysqld and
the tables involved were checked with
CHECK TABLE
before you ran
the query, can you provide a reproducible test case? See
Section 24.5, “Debugging and Porting MySQL”.
What is the value of the
wait_timeout
system
variable in the MySQL server? (mysqladmin
variables gives you the value of this variable.)
Have you tried to run mysqld with the general query log enabled to determine whether the problem query appears in the log? (See Section 5.2.3, “The General Query Log”.)
See also Section B.5.2.11, “Communication Errors and Aborted Connections”, and Section 1.6, “How to Report Bugs or Problems”.
A communication packet is a single SQL statement sent to the MySQL server, a single row that is sent to the client, or a binary log event sent from a master replication server to a slave.
The largest possible packet that can be transmitted to or from a MySQL 5.5 server or client is 1GB.
When a MySQL client or the mysqld server
receives a packet bigger than
max_allowed_packet
bytes, it
issues an
ER_NET_PACKET_TOO_LARGE
error
and closes the connection. With some clients, you may also get
a Lost connection to MySQL server during
query
error if the communication packet is too
large.
Both the client and the server have their own
max_allowed_packet
variable,
so if you want to handle big packets, you must increase this
variable both in the client and in the server.
If you are using the mysql client program,
its default
max_allowed_packet
variable
is 16MB. To set a larger value, start mysql
like this:
shell> mysql --max_allowed_packet=32M
That sets the packet size to 32MB.
The server's default
max_allowed_packet
value is
1MB. You can increase this if the server needs to handle big
queries (for example, if you are working with big
BLOB
columns). For example, to
set the variable to 16MB, start the server like this:
shell> mysqld --max_allowed_packet=16M
You can also use an option file to set
max_allowed_packet
. For
example, to set the size for the server to 16MB, add the
following lines in an option file:
[mysqld] max_allowed_packet=16M
It is safe to increase the value of this variable because the extra memory is allocated only when needed. For example, mysqld allocates more memory only when you issue a long query or when mysqld must return a large result row. The small default value of the variable is a precaution to catch incorrect packets between the client and server and also to ensure that you do not run out of memory by using large packets accidentally.
You can also get strange problems with large packets if you
are using large BLOB
values but
have not given mysqld access to enough
memory to handle the query. If you suspect this is the case,
try adding ulimit -d 256000 to the
beginning of the mysqld_safe script and
restarting mysqld.
If connection problems occur such as communication errors or aborted connections, use these sources of information to diagnose problems:
The error log. See Section 5.2.2, “The Error Log”.
The general query log. See Section 5.2.3, “The General Query Log”.
The
Aborted_
status variables. See
Section 5.1.6, “Server Status Variables”.
xxx
If you start the server with the
--log-warnings
option, you
might find messages like this in your error log:
Aborted connection 854 to db: 'employees' user: 'josh'
If a client is unable even to connect, the server increments
the Aborted_connects
status
variable. Unsuccessful connection attempts can occur for the
following reasons:
A client attempts to access a database but has no privileges for it.
A client uses an incorrect password.
A connection packet does not contain the right information.
It takes more than
connect_timeout
seconds
to obtain a connect packet. See
Section 5.1.4, “Server System Variables”.
If these kinds of things happen, it might indicate that someone is trying to break into your server! If the general query log is enabled, messages for these types of problems are logged to it.
If a client successfully connects but later disconnects
improperly or is terminated, the server increments the
Aborted_clients
status
variable, and logs an Aborted
connection message to the error log. The cause can
be any of the following:
The client program did not call
mysql_close()
before
exiting.
The client had been sleeping more than
wait_timeout
or
interactive_timeout
seconds without issuing any requests to the server. See
Section 5.1.4, “Server System Variables”.
The client program ended abruptly in the middle of a data transfer.
Other reasons for problems with aborted connections or aborted clients:
The max_allowed_packet
variable value is too small or queries require more memory
than you have allocated for mysqld. See
Section B.5.2.10, “Packet Too Large”.
Use of Ethernet protocol with Linux, both half and full duplex. Some Linux Ethernet drivers have this bug. You should test for this bug by transferring a huge file using FTP between the client and server machines. If a transfer goes in burst-pause-burst-pause mode, you are experiencing a Linux duplex syndrome. Switch the duplex mode for both your network card and hub/switch to either full duplex or to half duplex and test the results to determine the best setting.
A problem with the thread library that causes interrupts on reads.
Badly configured TCP/IP.
Faulty Ethernets, hubs, switches, cables, and so forth. This can be diagnosed properly only by replacing hardware.
If a table-full error occurs, it may be that the disk is full or that the table has reached its maximum size. The effective maximum table size for MySQL databases is usually determined by operating system constraints on file sizes, not by MySQL internal limits. See Section C.10.3, “Limits on Table Size”.
This error can occur sometimes for MySQL Cluster tables even
when there appears to be more than sufficient data memory
available. See the documentation for the
DataMemory
MySQL
Cluster data node configuration parameter, as well as
Section 18.1.2, “MySQL Cluster Nodes, Node Groups, Replicas, and Partitions”, for more
information.
If you get an error of the following type for some queries, it means that MySQL cannot create a temporary file for the result set in the temporary directory:
Can't create/write to file '\\sqla3fe_0.ism'.
The preceding error is a typical message for Windows; the Unix message is similar.
One fix is to start mysqld with the
--tmpdir
option or to add the
option to the [mysqld]
section of your
option file. For example, to specify a directory of
C:\temp
, use these lines:
[mysqld] tmpdir=C:/temp
The C:\temp
directory must exist and have
sufficient space for the MySQL server to write to. See
Section 4.2.6, “Using Option Files”.
Another cause of this error can be permissions issues. Make
sure that the MySQL server can write to the
tmpdir
directory.
Check also the error code that you get with perror. One reason the server cannot write to a table is that the file system is full:
shell> perror 28
OS error code 28: No space left on device
If you get an error of the following type during startup, it indicates that the file system or directory used for storing data files is write protected. Provided that the write error is to a test file, the error is not serious and can be safely ignored.
Can't create test file /usr/local/mysql/data/master.lower-test
If you get Commands out of sync; you can't run this
command now
in your client code, you are calling
client functions in the wrong order.
This can happen, for example, if you are using
mysql_use_result()
and try to
execute a new query before you have called
mysql_free_result()
. It can
also happen if you try to execute two queries that return data
without calling
mysql_use_result()
or
mysql_store_result()
in
between.
If you get the following error, it means that when
mysqld was started or when it reloaded the
grant tables, it found an account in the
user
table that had an invalid password.
Found wrong password for user
'
some_user
'@'some_host
';
ignoring user
As a result, the account is simply ignored by the permission system.
The following list indicates possible causes of and fixes for this problem:
You may be running a new version of
mysqld with an old
user
table. You can check this by
executing mysqlshow mysql user to see
whether the Password
column is shorter
than 16 characters. If so, you can correct this condition
by running the
scripts/add_long_password
script.
The account has an old password (eight characters long).
Update the account in the user
table to
have a new password.
You have specified a password in the
user
table without using the
PASSWORD()
function. Use
mysql to update the account in the
user
table with a new password, making
sure to use the PASSWORD()
function:
mysql>UPDATE user SET Password=PASSWORD('
->new_password
')WHERE User='
some_user
' AND Host='some_host
';
If you get either of the following errors, it usually means that no table exists in the default database with the given name:
Table 'tbl_name
' doesn't exist Can't find file: 'tbl_name
' (errno: 2)
In some cases, it may be that the table does exist but that you are referring to it incorrectly:
Because MySQL uses directories and files to store databases and tables, database and table names are case sensitive if they are located on a file system that has case-sensitive file names.
Even for file systems that are not case sensitive, such as on Windows, all references to a given table within a query must use the same lettercase.
You can check which tables are in the default database with
SHOW TABLES
. See
Section 13.7.5, “SHOW Syntax”.
You might see an error like this if you have character set problems:
MySQL Connection Failed: Can't initialize character set charset_name
This error can have any of the following causes:
The character set is a multibyte character set and you
have no support for the character set in the client. In
this case, you need to recompile the client by running
CMake with the
-DDEFAULT_CHARSET=
or
charset_name
-DWITH_EXTRA_CHARSETS=
option. See
Section 2.9.4, “MySQL Source-Configuration Options”.
charset_name
All standard MySQL binaries are compiled with
-DWITH_EXTRA_CHARSETS=all
,
which enables support for all multibyte character sets.
See Section 2.9.4, “MySQL Source-Configuration Options”.
The character set is a simple character set that is not compiled into mysqld, and the character set definition files are not in the place where the client expects to find them.
In this case, you need to use one of the following methods to solve the problem:
Recompile the client with support for the character set. See Section 2.9.4, “MySQL Source-Configuration Options”.
Specify to the client the directory where the
character set definition files are located. For many
clients, you can do this with the
--character-sets-dir
option.
Copy the character definition files to the path where the client expects them to be.
If you get ERROR '...' not found (errno:
23)
, Can't open file: ... (errno:
24)
, or any other error with errno
23
or errno 24
from MySQL, it
means that you haven't allocated enough file descriptors for
the MySQL server. You can use the perror
utility to get a description of what the error number means:
shell>perror 23
OS error code 23: File table overflow shell>perror 24
OS error code 24: Too many open files shell>perror 11
OS error code 11: Resource temporarily unavailable
The problem here is that mysqld is trying to keep open too many files simultaneously. You can either tell mysqld not to open so many files at once or increase the number of file descriptors available to mysqld.
To tell mysqld to keep open fewer files at
a time, you can make the table cache smaller by reducing the
value of the table_open_cache
system variable (the default value is 64). This may not
entirely prevent running out of file descriptors because in
some circumstances the server may attempt to extend the cache
size temporarily, as described in
Section 8.4.3.1, “How MySQL Opens and Closes Tables”. Reducing the value of
max_connections
also reduces
the number of open files (the default value is 100).
To change the number of file descriptors available to
mysqld, you can use the
--open-files-limit
option
to mysqld_safe or set the
open_files_limit
system
variable. See Section 5.1.4, “Server System Variables”. The
easiest way to set these values is to add an option to your
option file. See Section 4.2.6, “Using Option Files”. If you have
an old version of mysqld that does not
support setting the open files limit, you can edit the
mysqld_safe script. There is a
commented-out line ulimit -n 256 in the
script. You can remove the “#
”
character to uncomment this line, and change the number
256
to set the number of file descriptors
to be made available to mysqld.
--open-files-limit
and
ulimit can increase the number of file
descriptors, but only up to the limit imposed by the operating
system. There is also a “hard” limit that can be
overridden only if you start mysqld_safe or
mysqld as root
(just
remember that you also need to start the server with the
--user
option in this case so
that it does not continue to run as root
after it starts up). If you need to increase the operating
system limit on the number of file descriptors available to
each process, consult the documentation for your system.
If you run the tcsh shell, ulimit does not work! tcsh also reports incorrect values when you ask for the current limits. In this case, you should start mysqld_safe using sh.
If you have started mysqld with
--myisam-recover-options
, MySQL
automatically checks and tries to repair
MyISAM
tables if they are marked as 'not
closed properly' or 'crashed'. If this happens, MySQL writes
an entry in the hostname.err
file
'Warning: Checking table ...'
which is
followed by Warning: Repairing table
if the
table needs to be repaired. If you get a lot of these errors,
without mysqld having died unexpectedly
just before, then something is wrong and needs to be
investigated further.
As of MySQL 5.5.3, when the server detects
MyISAM
table corruption, it writes
additional information to the error log, such as the name and
line number of the source file, and the list of threads
accessing the table. Example: Got an error from
thread_id=1, mi_dynrec.c:368
. This is useful
information to include in bug reports.
See also Section 5.1.3, “Server Command Options”, and Section 24.5.1.7, “Making a Test Case If You Experience Table Corruption”.
If you have problems with file permissions, the
UMASK
or UMASK_DIR
environment variable might be set incorrectly when
mysqld starts. For example, MySQL might
issue the following error message when you create a table:
ERROR: Can't find file: 'path/with/filename.frm' (Errcode: 13)
The default UMASK
and
UMASK_DIR
values are
0660
and 0700
,
respectively. MySQL assumes that the value for
UMASK
or UMASK_DIR
is in
octal if it starts with a zero. For example, setting
UMASK=0600
is equivalent to
UMASK=384
because 0600 octal is 384
decimal.
To change the default UMASK
value, start
mysqld_safe as follows:
shell>UMASK=384 # = 600 in octal
shell>export UMASK
shell>mysqld_safe &
By default, MySQL creates database directories with an access
permission value of 0700
. To modify this
behavior, set the UMASK_DIR
variable. If
you set its value, new directories are created with the
combined UMASK
and
UMASK_DIR
values. For example, to give
group access to all new directories, start
mysqld_safe as follows:
shell>UMASK_DIR=504 # = 770 in octal
shell>export UMASK_DIR
shell>mysqld_safe &
For additional details, see Section 2.12, “Environment Variables”.
If you have never assigned a root
password
for MySQL, the server does not require a password at all for
connecting as root
. However, this is
insecure. For instructions on assigning passwords, see
Section 2.10.4, “Securing the Initial MySQL Accounts”.
If you know the root
password and want to
change it, see Section 13.7.1.6, “SET PASSWORD Syntax”.
If you assigned a root
password previously
but have forgotten it, you can assign a new password. The
following sections provide instructions for Windows and Unix
and Unix-like systems, as well as generic instructions that
apply to any system.
On Windows, use the following procedure to reset the
password for the MySQL 'root'@'localhost'
account. To change the password for a
root
account with a different host name
part, modify the instructions to use that host name.
Log on to your system as Administrator.
Stop the MySQL server if it is running. For a server that is running as a Windows service, go to the Services manager: From the
menu, select , then , then . Find the MySQL service in the list and stop it.If your server is not running as a service, you may need to use the Task Manager to force it to stop.
Create a text file containing the following statement on a single line. Replace the password with the password that you want to use.
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Save the file. This example assumes that you name the
file C:\mysql-init.txt
.
Open a console window to get to the command prompt: From the cmd as the command to be run.
menu, select , then enter
Start the MySQL server with the special
--init-file
option
(notice that the backslash in the option value is
doubled):
C:\>cd "C:\Program Files\MySQL\MySQL Server 5.5\bin"
C:\>mysqld --init-file=C:\\mysql-init.txt
If you installed MySQL to a different location, adjust the cd command accordingly.
The server executes the contents of the file named by
the --init-file
option at
startup, changing the
'root'@'localhost'
account password.
To have server output to appear in the console window
rather than in a log file, add the
--console
option to the
mysqld command.
If you installed MySQL using the MySQL Installation
Wizard, you may need to specify a
--defaults-file
option.
For example:
C:\>mysqld
--defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 5.5\\my.ini"
--init-file=C:\\mysql-init.txt
The appropriate
--defaults-file
setting
can be found using the Services Manager: From the
menu, select
, then
, then
. Find the MySQL
service in the list, right-click it, and choose the
Properties
option. The Path
to executable
field contains the
--defaults-file
setting.
After the server has started successfully, delete
C:\mysql-init.txt
.
You should now be able to connect to the MySQL server as
root
using the new password. Stop the
MySQL server and restart it normally. If you run the server
as a service, start it from the Windows Services window. If
you start the server manually, use whatever command you
normally use.
On Unix, use the following procedure to reset the password
for the MySQL 'root'@'localhost'
account.
To change the password for a root
account
with a different host name part, modify the instructions to
use that host name.
The instructions assume that you will start the MySQL server
from the Unix login account that you normally use for
running it. For example, if you run the server using the
mysql
login account, you should log in as
mysql
before using the instructions.
Alternatively, you can log in as root
,
but in this case you must start
mysqld with the
--user=mysql
option. If you
start the server as root
without using
--user=mysql
, the server may
create root
-owned files in the data
directory, such as log files, and these may cause
permission-related problems for future server startups. If
that happens, you will need to either change the ownership
of the files to mysql
or remove them.
Log on to your system as the Unix user that the MySQL
server runs as (for example, mysql
).
Stop the MySQL server if it is running. Locate the
.pid
file that contains the
server's process ID. The exact location and name of this
file depend on your distribution, host name, and
configuration. Common locations are
/var/lib/mysql/
,
/var/run/mysqld/
, and
/usr/local/mysql/data/
. Generally,
the file name has an extension of
.pid
and begins with either
mysqld
or your system's host name.
Stop the MySQL server by sending a normal
kill
(not kill -9
)
to the mysqld process. Use the actual
path name of the .pid
file in the
following command:
shell> kill `cat /mysql-data-directory/host_name.pid`
Use backticks (not forward quotation marks) with the
cat
command. These cause the output
of cat
to be substituted into the
kill
command.
Create a text file containing the following statement on a single line. Replace the password with the password that you want to use.
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Save the file. This example assumes that you name the
file /home/me/mysql-init
. The file
contains the password, so do not save it where it can be
read by other users. If you are not logged in as
mysql
(the user the server runs as),
make sure that the file has permissions that permit
mysql
to read it.
Start the MySQL server with the special
--init-file
option:
shell> mysqld_safe --init-file=/home/me/mysql-init &
The server executes the contents of the file named by
the --init-file
option at
startup, changing the
'root'@'localhost'
account password.
After the server has started successfully, delete
/home/me/mysql-init
.
You should now be able to connect to the MySQL server as
root
using the new password. Stop the
server and restart it normally.
The preceding sections provide password-resetting instructions specifically for Windows and Unix and Unix-like systems. Alternatively, on any platform, you can reset the password using the mysql client (but this approach is less secure):
Stop the MySQL server if necessary, then restart it with
the --skip-grant-tables
option. This enables anyone to connect without a
password and with all privileges, and disables
account-management statements such as
SET PASSWORD
. Because
this is insecure, you might want to use
--skip-grant-tables
in
conjunction with
--skip-networking
to
prevent remote clients from connecting.
Connect to the MySQL server using the
mysql client; no password is
necessary because the server was started with
--skip-grant-tables
:
shell> mysql
In the mysql
client, tell the server
to reload the grant tables so that account-management
statements work:
mysql> FLUSH PRIVILEGES;
Then change the 'root'@'localhost'
account password. Replace the password with the password
that you want to use. To change the password for a
root
account with a different host
name part, modify the instructions to use that host
name.
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
You should now be able to connect to the MySQL server as
root
using the new password. Stop the
server and restart it normally (without the
--skip-grant-tables
and
--skip-networking
options).
Each MySQL version is tested on many platforms before it is released. This does not mean that there are no bugs in MySQL, but if there are bugs, they should be very few and can be hard to find. If you have a problem, it always helps if you try to find out exactly what crashes your system, because you have a much better chance of getting the problem fixed quickly.
First, you should try to find out whether the problem is that the mysqld server dies or whether your problem has to do with your client. You can check how long your mysqld server has been up by executing mysqladmin version. If mysqld has died and restarted, you may find the reason by looking in the server's error log. See Section 5.2.2, “The Error Log”.
On some systems, you can find in the error log a stack trace
of where mysqld died that you can resolve
with the resolve_stack_dump
program. See
Section 24.5, “Debugging and Porting MySQL”. Note that the variable values
written in the error log may not always be 100% correct.
Many server crashes are caused by corrupted data files or
index files. MySQL updates the files on disk with the
write()
system call after every SQL
statement and before the client is notified about the result.
(This is not true if you are running with
--delay-key-write
, in which
case data files are written but not index files.) This means
that data file contents are safe even if
mysqld crashes, because the operating
system ensures that the unflushed data is written to disk. You
can force MySQL to flush everything to disk after every SQL
statement by starting mysqld with the
--flush
option.
The preceding means that normally you should not get corrupted tables unless one of the following happens:
The MySQL server or the server host was killed in the middle of an update.
You have found a bug in mysqld that caused it to die in the middle of an update.
Some external program is manipulating data files or index files at the same time as mysqld without locking the table properly.
You are running many mysqld servers
using the same data directory on a system that does not
support good file system locks (normally handled by the
lockd
lock manager), or you are running
multiple servers with external locking disabled.
You have a crashed data file or index file that contains very corrupt data that confused mysqld.
You have found a bug in the data storage code. This isn't
likely, but it is at least possible. In this case, you can
try to change the storage engine to another engine by
using ALTER TABLE
on a
repaired copy of the table.
Because it is very difficult to know why something is crashing, first try to check whether things that work for others crash for you. Please try the following things:
Stop the mysqld server with
mysqladmin shutdown, run
myisamchk --silent --force */*.MYI from
the data directory to check all MyISAM
tables, and restart mysqld. This
ensures that you are running from a clean state. See
Chapter 5, MySQL Server Administration.
Start mysqld with the general query log enabled (see Section 5.2.3, “The General Query Log”). Then try to determine from the information written to the log whether some specific query kills the server. About 95% of all bugs are related to a particular query. Normally, this is one of the last queries in the log file just before the server restarts. See Section 5.2.3, “The General Query Log”. If you can repeatedly kill MySQL with a specific query, even when you have checked all tables just before issuing it, then you have been able to locate the bug and should submit a bug report for it. See Section 1.6, “How to Report Bugs or Problems”.
Try to make a test case that we can use to repeat the problem. See Section 24.5, “Debugging and Porting MySQL”.
Try the fork_big.pl
script. (It is
located in the tests
directory of
source distributions.)
If you configure MySQL for debugging, it is much easier to
gather information about possible errors if something goes
wrong. Reconfigure MySQL with the
-DWITH_DEBUG=1
option to
CMake and then recompile. See
Section 24.5, “Debugging and Porting MySQL”.
Make sure that you have applied the latest patches for your operating system.
Use the
--skip-external-locking
option to mysqld. On some systems, the
lockd
lock manager does not work
properly; the
--skip-external-locking
option tells mysqld not to use external
locking. (This means that you cannot run two
mysqld servers on the same data
directory and that you must be careful if you use
myisamchk. Nevertheless, it may be
instructive to try the option as a test.)
Have you tried mysqladmin -u root processlist when mysqld appears to be running but not responding? Sometimes mysqld is not comatose even though you might think so. The problem may be that all connections are in use, or there may be some internal lock problem. mysqladmin -u root processlist usually is able to make a connection even in these cases, and can provide useful information about the current number of connections and their status.
Run the command mysqladmin -i 5 status or mysqladmin -i 5 -r status in a separate window to produce statistics while you run your other queries.
Try the following:
Start mysqld from gdb (or another debugger). See Section 24.5, “Debugging and Porting MySQL”.
Run your test scripts.
Print the backtrace and the local variables at the three lowest levels. In gdb, you can do this with the following commands when mysqld has crashed inside gdb:
backtrace info local up info local up info local
With gdb, you can also examine
which threads exist with info
threads
and switch to a specific thread with
thread
, where
N
N
is the thread ID.
Try to simulate your application with a Perl script to force MySQL to crash or misbehave.
Send a normal bug report. See Section 1.6, “How to Report Bugs or Problems”. Be even more detailed than usual. Because MySQL works for many people, it may be that the crash results from something that exists only on your computer (for example, an error that is related to your particular system libraries).
If you have a problem with tables containing
dynamic-length rows and you are using only
VARCHAR
columns (not
BLOB
or
TEXT
columns), you can try
to change all VARCHAR
to
CHAR
with
ALTER TABLE
. This forces
MySQL to use fixed-size rows. Fixed-size rows take a
little extra space, but are much more tolerant to
corruption.
The current dynamic row code has been in use for several years with very few problems, but dynamic-length rows are by nature more prone to errors, so it may be a good idea to try this strategy to see whether it helps.
Do not rule out your server hardware when diagnosing problems. Defective hardware can be the cause of data corruption. Particular attention should be paid to your memory and disk subsystems when troubleshooting hardware.
This section describes how MySQL responds to disk-full errors (such as “no space left on device”), and to quota-exceeded errors (such as “write failed” or “user block limit reached”).
This section is relevant for writes to
MyISAM
tables. It also applies for writes
to binary log files and binary log index file, except that
references to “row” and “record”
should be understood to mean “event.”
When a disk-full condition occurs, MySQL does the following:
It checks once every minute to see whether there is enough space to write the current row. If there is enough space, it continues as if nothing had happened.
Every 10 minutes it writes an entry to the log file, warning about the disk-full condition.
To alleviate the problem, you can take the following actions:
To continue, you only have to free enough disk space to insert all records.
To abort the thread, you must use mysqladmin kill. The thread is aborted the next time it checks the disk (in one minute).
Other threads might be waiting for the table that caused the disk-full condition. If you have several “locked” threads, killing the one thread that is waiting on the disk-full condition enables the other threads to continue.
Exceptions to the preceding behavior are when you use
REPAIR TABLE
or
OPTIMIZE TABLE
or when the
indexes are created in a batch after
LOAD DATA
INFILE
or after an ALTER
TABLE
statement. All of these statements may create
large temporary files that, if left to themselves, would cause
big problems for the rest of the system. If the disk becomes
full while MySQL is doing any of these operations, it removes
the big temporary files and mark the table as crashed. The
exception is that for ALTER
TABLE
, the old table is left unchanged.
On Unix, MySQL uses the value of the TMPDIR
environment variable as the path name of the directory in
which to store temporary files. If TMPDIR
is not set, MySQL uses the system default, which is usually
/tmp
, /var/tmp
, or
/usr/tmp
.
On Windows, MySQL checks in order the values of the
TMPDIR
, TEMP
, and
TMP
environment variables. For the first
one found to be set, MySQL uses it and does not check those
remaining. If none of TMPDIR
,
TEMP
, or TMP
are set,
MySQL uses the Windows system default, which is usually
C:\windows\temp\
.
If the file system containing your temporary file directory is
too small, you can use the
--tmpdir
option to
mysqld to specify a directory in a file
system where you have enough space. On replication slaves, you
can use --slave-load-tmpdir
to
specify a separate directory for holding temporary files when
replicating LOAD
DATA INFILE
statements.
The --tmpdir
option can be set
to a list of several paths that are used in round-robin
fashion. Paths should be separated by colon characters
(“:
”) on Unix and semicolon
characters (“;
”) on Windows.
To spread the load effectively, these paths should be located on different physical disks, not different partitions of the same disk.
If the MySQL server is acting as a replication slave, you
should be sure to set
--slave-load-tmpdir
not to
point to a directory that is on a memory-based file system or
to a directory that is cleared when the server host restarts.
A replication slave needs some of its temporary files to
survive a machine restart so that it can replicate temporary
tables or LOAD DATA
INFILE
operations. If files in the slave temporary
file directory are lost when the server restarts, replication
fails.
MySQL arranges that temporary files are removed if mysqld is terminated. On platforms that support it (such as Unix), this is done by unlinking the file after opening it. The disadvantage of this is that the name does not appear in directory listings and you do not see a big temporary file that fills up the file system in which the temporary file directory is located. (In such cases, lsof +L1 may be helpful in identifying large files associated with mysqld.)
When sorting (ORDER BY
or GROUP
BY
), MySQL normally uses one or two temporary files.
The maximum disk space required is determined by the following
expression:
(length of what is sorted + sizeof(row pointer)) * number of matched rows * 2
The row pointer size is usually four bytes, but may grow in the future for really big tables.
For some SELECT
queries, MySQL
also creates temporary SQL tables. These are not hidden and
have names of the form SQL_*
.
ALTER TABLE
creates a temporary
copy of the original table in the same directory as the
original table.
The default location for the Unix socket file that the server
uses for communication with local clients is
/tmp/mysql.sock
. (For some distribution
formats, the directory might be different, such as
/var/lib/mysql
for RPMs.)
On some versions of Unix, anyone can delete files in the
/tmp
directory or other similar
directories used for temporary files. If the socket file is
located in such a directory on your system, this might cause
problems.
On most versions of Unix, you can protect your
/tmp
directory so that files can be
deleted only by their owners or the superuser
(root
). To do this, set the
sticky
bit on the /tmp
directory by logging in as root
and using
the following command:
shell> chmod +t /tmp
You can check whether the sticky
bit is set
by executing ls -ld /tmp
. If the last
permission character is t
, the bit is set.
Another approach is to change the place where the server creates the Unix socket file. If you do this, you should also let client programs know the new location of the file. You can specify the file location in several ways:
Specify the path in a global or local option file. For
example, put the following lines in
/etc/my.cnf
:
[mysqld] socket=/path/to/socket [client] socket=/path/to/socket
Specify a --socket
option
on the command line to mysqld_safe and
when you run client programs.
Set the MYSQL_UNIX_PORT
environment
variable to the path of the Unix socket file.
Recompile MySQL from source to use a different default
Unix socket file location. Define the path to the file
with the MYSQL_UNIX_ADDR
option when you run CMake. See
Section 2.9.4, “MySQL Source-Configuration Options”.
You can test whether the new socket location works by attempting to connect to the server with this command:
shell> mysqladmin --socket=/path/to/socket version
If you have a problem with SELECT NOW()
returning values in UTC and not your local time, you have to
tell the server your current time zone. The same applies if
UNIX_TIMESTAMP()
returns the
wrong value. This should be done for the environment in which
the server runs; for example, in
mysqld_safe or
mysql.server. See
Section 2.12, “Environment Variables”.
You can set the time zone for the server with the
--timezone=
option to mysqld_safe. You can also set it
by setting the timezone_name
TZ
environment variable
before you start mysqld.
The permissible values for
--timezone
or
TZ
are system dependent. Consult your
operating system documentation to see what values are
acceptable.
For nonbinary strings (CHAR
,
VARCHAR
,
TEXT
), string searches use the
collation of the comparison operands. For binary strings
(BINARY
,
VARBINARY
,
BLOB
), comparisons use the
numeric values of the bytes in the operands; this means that
for alphabetic characters, comparisons will be case sensitive.
A comparison between a nonbinary string and binary string is treated as a comparison of binary strings.
Simple comparison operations (>=, >, =, <,
<=
, sorting, and grouping) are based on each
character's “sort value.” Characters with the
same sort value are treated as the same character. For
example, if “e
” and
“é
” have the same sort
value in a given collation, they compare as equal.
The default character set and collation are
latin1
and
latin1_swedish_ci
, so nonbinary string
comparisons are case insensitive by default. This means that
if you search with
, you get all column values that start with
col_name
LIKE
'a%'A
or a
. To make this
search case sensitive, make sure that one of the operands has
a case sensitive or binary collation. For example, if you are
comparing a column and a string that both have the
latin1
character set, you can use the
COLLATE
operator to cause either operand to
have the latin1_general_cs
or
latin1_bin
collation:
col_name
COLLATE latin1_general_cs LIKE 'a%'col_name
LIKE 'a%' COLLATE latin1_general_cscol_name
COLLATE latin1_bin LIKE 'a%'col_name
LIKE 'a%' COLLATE latin1_bin
If you want a column always to be treated in case-sensitive fashion, declare it with a case sensitive or binary collation. See Section 13.1.17, “CREATE TABLE Syntax”.
To cause a case-sensitive comparison of nonbinary strings to
be case insensitive, use COLLATE
to name a
case-insensitive collation. The strings in the following
example normally are case sensitive, but
COLLATE
changes the comparison to be case
insensitive:
mysql>SET @s1 = 'MySQL' COLLATE latin1_bin,
->@s2 = 'mysql' COLLATE latin1_bin;
mysql>SELECT @s1 = @s2;
+-----------+ | @s1 = @s2 | +-----------+ | 0 | +-----------+ mysql>SELECT @s1 COLLATE latin1_swedish_ci = @s2;
+-------------------------------------+ | @s1 COLLATE latin1_swedish_ci = @s2 | +-------------------------------------+ | 1 | +-------------------------------------+
A binary string is case sensitive in comparisons. To compare
the string as case insensitive, convert it to a nonbinary
string and use COLLATE
to name a
case-insensitive collation:
mysql>SET @s = BINARY 'MySQL';
mysql>SELECT @s = 'mysql';
+--------------+ | @s = 'mysql' | +--------------+ | 0 | +--------------+ mysql>SELECT CONVERT(@s USING latin1) COLLATE latin1_swedish_ci = 'mysql';
+--------------------------------------------------------------+ | CONVERT(@s USING latin1) COLLATE latin1_swedish_ci = 'mysql' | +--------------------------------------------------------------+ | 1 | +--------------------------------------------------------------+
To determine whether a value will compare as a nonbinary or
binary string, use the
COLLATION()
function. This
example shows that VERSION()
returns a string that has a case-insensitive collation, so
comparisons are case insensitive:
mysql> SELECT COLLATION(VERSION());
+----------------------+
| COLLATION(VERSION()) |
+----------------------+
| utf8_general_ci |
+----------------------+
For binary strings, the collation value is
binary
, so comparisons will be case
sensitive. One context in which you will see
binary
is for compression and encryption
functions, which return binary strings as a general rule:
string:
mysql> SELECT COLLATION(ENCRYPT('x')), COLLATION(SHA1('x'));
+-------------------------+----------------------+
| COLLATION(ENCRYPT('x')) | COLLATION(SHA1('x')) |
+-------------------------+----------------------+
| binary | binary |
+-------------------------+----------------------+
The format of a DATE
value is
'YYYY-MM-DD'
. According to standard SQL, no
other format is permitted. You should use this format in
UPDATE
expressions and in the
WHERE
clause of
SELECT
statements. For example:
SELECT * FROM t1 WHERE date >= '2003-05-05';
As a convenience, MySQL automatically converts a date to a
number if the date is used in a numeric context and vice
versa. MySQL also permits a “relaxed” string
format when updating and in a WHERE
clause
that compares a date to a DATE
,
DATETIME
, or
TIMESTAMP
column.
“Relaxed” format means that any punctuation
character may be used as the separator between parts. For
example, '2004-08-15'
and
'2004#08#15'
are equivalent. MySQL can also
convert a string containing no separators (such as
'20040815'
), provided it makes sense as a
date.
When you compare a DATE
,
TIME
,
DATETIME
, or
TIMESTAMP
to a constant string
with the <
, <=
,
=
, >=
,
>
, or BETWEEN
operators, MySQL normally converts the string to an internal
long integer for faster comparison (and also for a bit more
“relaxed” string checking). However, this
conversion is subject to the following exceptions:
For those exceptions, the comparison is done by converting the objects to strings and performing a string comparison.
To be on the safe side, assume that strings are compared as strings and use the appropriate string functions if you want to compare a temporal value to a string.
The special “zero” date
'0000-00-00'
can be stored and retrieved as
'0000-00-00'.
When a
'0000-00-00'
date is used through
Connector/ODBC, it is automatically converted to
NULL
because ODBC cannot handle that kind
of date.
Because MySQL performs the conversions just described, the
following statements work (assume that
idate
is a
DATE
column):
INSERT INTO t1 (idate) VALUES (19970505); INSERT INTO t1 (idate) VALUES ('19970505'); INSERT INTO t1 (idate) VALUES ('97-05-05'); INSERT INTO t1 (idate) VALUES ('1997.05.05'); INSERT INTO t1 (idate) VALUES ('1997 05 05'); INSERT INTO t1 (idate) VALUES ('0000-00-00'); SELECT idate FROM t1 WHERE idate >= '1997-05-05'; SELECT idate FROM t1 WHERE idate >= 19970505; SELECT MOD(idate,100) FROM t1 WHERE idate >= 19970505; SELECT idate FROM t1 WHERE idate >= '19970505';
However, the following statement does not work:
SELECT idate FROM t1 WHERE STRCMP(idate,'20030505')=0;
STRCMP()
is a string function,
so it converts idate
to a string in
'YYYY-MM-DD'
format and performs a string
comparison. It does not convert '20030505'
to the date '2003-05-05'
and perform a date
comparison.
If you enable the
ALLOW_INVALID_DATES
SQL
mode, MySQL permits you to store dates that are given only
limited checking: MySQL requires only that the day is in the
range from 1 to 31 and the month is in the range from 1 to 12.
This makes MySQL very convenient for Web applications where
you obtain year, month, and day in three different fields and
you want to store exactly what the user inserted (without date
validation).
MySQL permits you to store dates where the day or month and
day are zero. This is convenient if you want to store a
birthdate in a DATE
column and
you know only part of the date. To disallow zero month or day
parts in dates, enable the
NO_ZERO_IN_DATE
SQL mode.
MySQL permits you to store a “zero” value of
'0000-00-00'
as a “dummy
date.” This is in some cases more convenient than using
NULL
values. If a date to be stored in a
DATE
column cannot be converted
to any reasonable value, MySQL stores
'0000-00-00'
. To disallow
'0000-00-00'
, enable the
NO_ZERO_DATE
SQL mode.
To have MySQL check all dates and accept only legal dates
(unless overridden by IGNORE
), set the
sql_mode
system variable to
"NO_ZERO_IN_DATE,NO_ZERO_DATE"
.
The concept of the NULL
value is a common
source of confusion for newcomers to SQL, who often think that
NULL
is the same thing as an empty string
''
. This is not the case. For example, the
following statements are completely different:
mysql>INSERT INTO my_table (phone) VALUES (NULL);
mysql>INSERT INTO my_table (phone) VALUES ('');
Both statements insert a value into the
phone
column, but the first inserts a
NULL
value and the second inserts an empty
string. The meaning of the first can be regarded as
“phone number is not known” and the meaning of
the second can be regarded as “the person is known to
have no phone, and thus no phone number.”
To help with NULL
handling, you can use the
IS NULL
and IS
NOT NULL
operators and the
IFNULL()
function.
In SQL, the NULL
value is never true in
comparison to any other value, even NULL
.
An expression that contains NULL
always
produces a NULL
value unless otherwise
indicated in the documentation for the operators and functions
involved in the expression. All columns in the following
example return NULL
:
mysql> SELECT NULL, 1+NULL, CONCAT('Invisible',NULL);
To search for column values that are NULL
,
you cannot use an expr = NULL
test. The
following statement returns no rows, because expr =
NULL
is never true for any expression:
mysql> SELECT * FROM my_table WHERE phone = NULL;
To look for NULL
values, you must use the
IS NULL
test. The following
statements show how to find the NULL
phone
number and the empty phone number:
mysql>SELECT * FROM my_table WHERE phone IS NULL;
mysql>SELECT * FROM my_table WHERE phone = '';
See Section 3.3.4.6, “Working with NULL Values”, for additional information and examples.
You can add an index on a column that can have
NULL
values if you are using the
MyISAM
, InnoDB
, or
MEMORY
storage engine. Otherwise, you must
declare an indexed column NOT NULL
, and you
cannot insert NULL
into the column.
When reading data with
LOAD DATA
INFILE
, empty or missing columns are updated with
''
. To load a NULL
value
into a column, use \N
in the data file. The
literal word “NULL
” may also
be used under some circumstances. See
Section 13.2.6, “LOAD DATA INFILE Syntax”.
When using DISTINCT
, GROUP
BY
, or ORDER BY
, all
NULL
values are regarded as equal.
When using ORDER BY
,
NULL
values are presented first, or last if
you specify DESC
to sort in descending
order.
Aggregate (summary) functions such as
COUNT()
,
MIN()
, and
SUM()
ignore
NULL
values. The exception to this is
COUNT(*)
, which counts rows and
not individual column values. For example, the following
statement produces two counts. The first is a count of the
number of rows in the table, and the second is a count of the
number of non-NULL
values in the
age
column:
mysql> SELECT COUNT(*), COUNT(age) FROM person;
For some data types, MySQL handles NULL
values specially. If you insert NULL
into a
TIMESTAMP
column, the current
date and time is inserted. If you insert
NULL
into an integer or floating-point
column that has the AUTO_INCREMENT
attribute, the next number in the sequence is inserted.
An alias can be used in a query select list to give a column a
different name. You can use the alias in GROUP
BY
, ORDER BY
, or
HAVING
clauses to refer to the column:
SELECT SQRT(a*b) AS root FROMtbl_name
GROUP BY root HAVING root > 0; SELECT id, COUNT(*) AS cnt FROMtbl_name
GROUP BY id HAVING cnt > 0; SELECT id AS 'Customer identity' FROMtbl_name
;
Standard SQL disallows references to column aliases in a
WHERE
clause. This restriction is imposed
because when the WHERE
clause is evaluated,
the column value may not yet have been determined. For
example, the following query is illegal:
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
The WHERE
clause determines which rows
should be included in the GROUP BY
clause,
but it refers to the alias of a column value that is not known
until after the rows have been selected, and grouped by the
GROUP BY
.
In the select list of a query, a quoted column alias can be specified using identifier or string quoting characters:
SELECT 1 AS `one`, 2 AS 'two';
Elsewhere in the statement, quoted references to the alias
must use identifier quoting or the reference is treated as a
string literal. For example, this statement groups by the
values in column id
, referenced using the
alias `a`
:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
But this statement groups by the literal string
'a'
and will not work as expected:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
If you receive the following message when trying to perform a
ROLLBACK
, it
means that one or more of the tables you used in the
transaction do not support transactions:
Warning: Some non-transactional changed tables couldn't be rolled back
These nontransactional tables are not affected by the
ROLLBACK
statement.
If you were not deliberately mixing transactional and
nontransactional tables within the transaction, the most
likely cause for this message is that a table you thought was
transactional actually is not. This can happen if you try to
create a table using a transactional storage engine that is
not supported by your mysqld server (or
that was disabled with a startup option). If
mysqld does not support a storage engine,
it instead creates the table as a MyISAM
table, which is nontransactional.
You can check the storage engine for a table by using either of these statements:
SHOW TABLE STATUS LIKE 'tbl_name
'; SHOW CREATE TABLEtbl_name
;
See Section 13.7.5.37, “SHOW TABLE STATUS Syntax”, and Section 13.7.5.12, “SHOW CREATE TABLE Syntax”.
You can check which storage engines your mysqld server supports by using this statement:
SHOW ENGINES;
You can also use the following statement, and check the value of the variable that is associated with the storage engine in which you are interested:
SHOW VARIABLES LIKE 'have_%';
For example, to determine whether the
InnoDB
storage engine is available, check
the value of the have_innodb
variable.
See Section 13.7.5.17, “SHOW ENGINES Syntax”, and Section 13.7.5.40, “SHOW VARIABLES Syntax”.
If the total length of the
DELETE
statement for
related_table
is more than 1MB (the default
value of the
max_allowed_packet
system
variable), you should split it into smaller parts and execute
multiple DELETE
statements. You
probably get the fastest DELETE
by specifying only 100 to 1,000
related_column
values per statement if the
related_column
is indexed. If the
related_column
isn't indexed, the speed is
independent of the number of arguments in the
IN
clause.
If you have a complicated query that uses many tables but that returns no rows, you should use the following procedure to find out what is wrong:
Test the query with EXPLAIN
to check whether you can find something that is obviously
wrong. See Section 13.8.2, “EXPLAIN Syntax”.
Select only those columns that are used in the
WHERE
clause.
Remove one table at a time from the query until it returns
some rows. If the tables are large, it is a good idea to
use LIMIT 10
with the query.
Issue a SELECT
for the
column that should have matched a row against the table
that was last removed from the query.
If you are comparing FLOAT
or DOUBLE
columns with
numbers that have decimals, you cannot use equality
(=
) comparisons. This problem is common
in most computer languages because not all floating-point
values can be stored with exact precision. In some cases,
changing the FLOAT
to a
DOUBLE
fixes this. See
Section B.5.4.8, “Problems with Floating-Point Values”.
If you still cannot figure out what is wrong, create a
minimal test that can be run with mysql test <
query.sql
that shows your problems. You can
create a test file by dumping the tables with
mysqldump --quick db_name
tbl_name_1
...
tbl_name_n
>
query.sql. Open the file in an editor, remove
some insert lines (if there are more than needed to
demonstrate the problem), and add your
SELECT
statement at the end
of the file.
Verify that the test file demonstrates the problem by executing these commands:
shell>mysqladmin create test2
shell>mysql test2 < query.sql
Attach the test file to a bug report, which you can file using the instructions in Section 1.6, “How to Report Bugs or Problems”.
Floating-point numbers sometimes cause confusion because they
are approximate and not stored as exact values. A
floating-point value as written in an SQL statement may not be
the same as the value represented internally. Attempts to
treat floating-point values as exact in comparisons may lead
to problems. They are also subject to platform or
implementation dependencies. The
FLOAT
and
DOUBLE
data types are subject
to these issues. For DECIMAL
columns, MySQL performs operations with a precision of 65
decimal digits, which should solve most common inaccuracy
problems.
The following example uses
DOUBLE
to demonstrate how
calculations that are done using floating-point operations are
subject to floating-point error.
mysql>CREATE TABLE t1 (i INT, d1 DOUBLE, d2 DOUBLE);
mysql>INSERT INTO t1 VALUES (1, 101.40, 21.40), (1, -80.00, 0.00),
->(2, 0.00, 0.00), (2, -13.20, 0.00), (2, 59.60, 46.40),
->(2, 30.40, 30.40), (3, 37.00, 7.40), (3, -29.60, 0.00),
->(4, 60.00, 15.40), (4, -10.60, 0.00), (4, -34.00, 0.00),
->(5, 33.00, 0.00), (5, -25.80, 0.00), (5, 0.00, 7.20),
->(6, 0.00, 0.00), (6, -51.40, 0.00);
mysql>SELECT i, SUM(d1) AS a, SUM(d2) AS b
->FROM t1 GROUP BY i HAVING a <> b;
+------+-------+------+ | i | a | b | +------+-------+------+ | 1 | 21.4 | 21.4 | | 2 | 76.8 | 76.8 | | 3 | 7.4 | 7.4 | | 4 | 15.4 | 15.4 | | 5 | 7.2 | 7.2 | | 6 | -51.4 | 0 | +------+-------+------+
The result is correct. Although the first five records look
like they should not satisfy the comparison (the values of
a
and b
do not appear to
be different), they may do so because the difference between
the numbers shows up around the tenth decimal or so, depending
on factors such as computer architecture or the compiler
version or optimization level. For example, different CPUs may
evaluate floating-point numbers differently.
If columns d1
and d2
had
been defined as DECIMAL
rather
than DOUBLE
, the result of the
SELECT
query would have
contained only one row—the last one shown above.
The correct way to do floating-point number comparison is to first decide on an acceptable tolerance for differences between the numbers and then do the comparison against the tolerance value. For example, if we agree that floating-point numbers should be regarded the same if they are same within a precision of one in ten thousand (0.0001), the comparison should be written to find differences larger than the tolerance value:
mysql>SELECT i, SUM(d1) AS a, SUM(d2) AS b FROM t1
->GROUP BY i HAVING ABS(a - b) > 0.0001;
+------+-------+------+ | i | a | b | +------+-------+------+ | 6 | -51.4 | 0 | +------+-------+------+ 1 row in set (0.00 sec)
Conversely, to get rows where the numbers are the same, the test should find differences within the tolerance value:
mysql>SELECT i, SUM(d1) AS a, SUM(d2) AS b FROM t1
->GROUP BY i HAVING ABS(a - b) <= 0.0001;
+------+------+------+ | i | a | b | +------+------+------+ | 1 | 21.4 | 21.4 | | 2 | 76.8 | 76.8 | | 3 | 7.4 | 7.4 | | 4 | 15.4 | 15.4 | | 5 | 7.2 | 7.2 | +------+------+------+ 5 rows in set (0.03 sec)
Floating-point values are subject to platform or implementation dependencies. Suppose that you execute the following statements:
CREATE TABLE t1(c1 FLOAT(53,0), c2 FLOAT(53,0)); INSERT INTO t1 VALUES('1e+52','-1e+52'); SELECT * FROM t1;
On some platforms, the SELECT
statement
returns inf
and -inf
. On
others, it returns 0
and
-0
.
An implication of the preceding issues is that if you attempt to create a replication slave by dumping table contents with mysqldump on the master and reloading the dump file into the slave, tables containing floating-point columns might differ between the two hosts.
MySQL uses a cost-based optimizer to determine the best way to resolve a query. In many cases, MySQL can calculate the best possible query plan, but sometimes MySQL does not have enough information about the data at hand and has to make “educated” guesses about the data.
For the cases when MySQL does not do the "right" thing, tools that you have available to help MySQL are:
Use the EXPLAIN
statement to
get information about how MySQL processes a query. To use
it, just add the keyword
EXPLAIN
to the front of your
SELECT
statement:
mysql> EXPLAIN SELECT * FROM t1, t2 WHERE t1.i = t2.i;
EXPLAIN
is discussed in more
detail in Section 13.8.2, “EXPLAIN Syntax”.
Use ANALYZE TABLE
to update the
key distributions for the scanned table. See
Section 13.7.2.1, “ANALYZE TABLE Syntax”.
tbl_name
Use FORCE INDEX
for the scanned table to
tell MySQL that table scans are very expensive compared to
using the given index:
SELECT * FROM t1, t2 FORCE INDEX (index_for_column) WHERE t1.col_name=t2.col_name;
USE INDEX
and IGNORE
INDEX
may also be useful. See
Section 8.9.3, “Index Hints”.
Global and table-level STRAIGHT_JOIN
. See
Section 13.2.9, “SELECT Syntax”.
You can tune global or thread-specific system variables. For
example, start mysqld with the
--max-seeks-for-key=1000
option or use SET max_seeks_for_key=1000
to tell the optimizer to assume that no key scan causes more
than 1,000 key seeks. See
Section 5.1.4, “Server System Variables”.
If you get a duplicate-key error when using
ALTER TABLE
to change the
character set or collation of a character column, the cause is
either that the new column collation maps two keys to the same
value or that the table is corrupted. In the latter case, you
should run REPAIR TABLE
on the
table.
If ALTER TABLE
dies with the
following error, the problem may be that MySQL crashed during
an earlier ALTER TABLE
operation and there is an old table named
A-
or
xxx
B-
lying
around:
xxx
Error on rename of './database/name.frm'
to './database/B-xxx
.frm' (Errcode: 17)
In this case, go to the MySQL data directory and delete all
files that have names starting with A-
or
B-
. (You may want to move them elsewhere
instead of deleting them.)
ALTER TABLE
works in the
following way:
Create a new table named
A-
with
the requested structural changes.
xxx
Copy all rows from the original table to
A-
.
xxx
Rename the original table to
B-
.
xxx
Rename
A-
to
your original table name.
xxx
Delete
B-
.
xxx
If something goes wrong with the renaming operation, MySQL
tries to undo the changes. If something goes seriously wrong
(although this shouldn't happen), MySQL may leave the old
table as
B-
. A
simple rename of the table files at the system level should
get your data back.
xxx
If you use ALTER TABLE
on a
transactional table or if you are using Windows,
ALTER TABLE
unlocks the table
if you had done a
LOCK
TABLE
on it. This is done because
InnoDB
and these operating systems cannot
drop a table that is in use.
The following list indicates limitations on the use of
TEMPORARY
tables:
A TEMPORARY
table can only be of type
MEMORY
, MyISAM
,
MERGE
, or InnoDB
.
Temporary tables are not supported for MySQL Cluster.
You cannot refer to a TEMPORARY
table
more than once in the same query. For example, the
following does not work:
mysql> SELECT * FROM temp_table, temp_table AS t2;
ERROR 1137: Can't reopen table: 'temp_table'
This error also occurs if you refer to a temporary table multiple times in a stored function under different aliases, even if the references occur in different statements within the function.
The SHOW TABLES
statement
does not list TEMPORARY
tables.
You cannot use RENAME
to rename a
TEMPORARY
table. However, you can use
ALTER TABLE
instead:
mysql> ALTER TABLE orig_name RENAME new_name;
There are known issues in using temporary tables with replication. See Section 17.4.1, “Replication Features and Issues”, for more information.
This section lists known issues in recent versions of MySQL.
For information about platform-specific issues, see the installation and porting instructions in Section 2.1, “General Installation Guidance”, and Section 24.5, “Debugging and Porting MySQL”.
The following problems are known:
Subquery optimization for IN
is not as
effective as for =
.
Even if you use lower_case_table_names=2
(which enables MySQL to remember the case used for databases
and table names), MySQL does not remember the case used for
database names for the function
DATABASE()
or within the
various logs (on case-insensitive systems).
Dropping a FOREIGN KEY
constraint does
not work in replication because the constraint may have
another name on the slave.
REPLACE
(and
LOAD DATA
with the
REPLACE
option) does not
trigger ON DELETE CASCADE
.
DISTINCT
with ORDER BY
does not work inside
GROUP_CONCAT()
if you do not
use all and only those columns that are in the
DISTINCT
list.
When inserting a big integer value (between 263 and 264−1) into a decimal or string column, it is inserted as a negative value because the number is evaluated in a signed integer context.
ANALYZE TABLE
,
OPTIMIZE TABLE
, and
REPAIR TABLE
may cause
problems on tables for which you are using
INSERT DELAYED
.
With statement-based binary logging, the master writes the executed queries to the binary log. This is a very fast, compact, and efficient logging method that works perfectly in most cases. However, it is possible for the data on the master and slave to become different if a query is designed in such a way that the data modification is nondeterministic (generally not a recommended practice, even outside of replication).
For example:
CREATE
TABLE ... SELECT
or
INSERT
... SELECT
statements that insert zero or
NULL
values into an
AUTO_INCREMENT
column.
DELETE
if you are
deleting rows from a table that has foreign keys with
ON DELETE CASCADE
properties.
REPLACE ...
SELECT
, INSERT IGNORE ...
SELECT
if you have duplicate key values in the
inserted data.
If and only if the preceding queries
have no ORDER BY
clause guaranteeing a
deterministic order.
For example, for
INSERT ...
SELECT
with no ORDER BY
, the
SELECT
may return rows in a
different order (which results in a row having different
ranks, hence getting a different number in the
AUTO_INCREMENT
column), depending on the
choices made by the optimizers on the master and slave.
A query is optimized differently on the master and slave only if:
The table is stored using a different storage engine on
the master than on the slave. (It is possible to use
different storage engines on the master and slave. For
example, you can use InnoDB
on the
master, but MyISAM
on the slave if
the slave has less available disk space.)
MySQL buffer sizes
(key_buffer_size
, and
so on) are different on the master and slave.
The master and slave run different MySQL versions, and the optimizer code differs between these versions.
This problem may also affect database restoration using mysqlbinlog|mysql.
The easiest way to avoid this problem is to add an
ORDER BY
clause to the aforementioned
nondeterministic queries to ensure that the rows are always
stored or modified in the same order. Using row-based or
mixed logging format also avoids the problem.
Log file names are based on the server host name if you do
not specify a file name with the startup option. To retain
the same log file names if you change your host name to
something else, you must explicitly use options such as
--log-bin=
.
See Section 5.1.3, “Server Command Options”. Alternatively, rename
the old files to reflect your host name change. If these are
binary logs, you must edit the binary log index file and fix
the binary log file names there as well. (The same is true
for the relay logs on a slave server.)
old_host_name
-bin
mysqlbinlog does not delete temporary
files left after a
LOAD DATA
INFILE
statement. See
Section 4.6.7, “mysqlbinlog — Utility for Processing Binary Log Files”.
RENAME
does not work with
TEMPORARY
tables or tables used in a
MERGE
table.
When using SET CHARACTER SET
, you cannot
use translated characters in database, table, and column
names.
You cannot use “_
” or
“%
” with
ESCAPE
in
LIKE ...
ESCAPE
.
The server uses only the first
max_sort_length
bytes when
comparing data values. This means that values cannot
reliably be used in GROUP BY
,
ORDER BY
, or DISTINCT
if they differ only after the first
max_sort_length
bytes. To
work around this, increase the variable value. The default
value of max_sort_length
is
1024 and can be changed at server startup time or at
runtime.
Numeric calculations are done with
BIGINT
or
DOUBLE
(both are normally 64
bits long). Which precision you get depends on the function.
The general rule is that bit functions are performed with
BIGINT
precision,
IF()
and
ELT()
with
BIGINT
or
DOUBLE
precision, and the
rest with DOUBLE
precision.
You should try to avoid using unsigned long long values if
they resolve to be larger than 63 bits (9223372036854775807)
for anything other than bit fields.
In MIN()
,
MAX()
, and other aggregate
functions, MySQL currently compares
ENUM
and
SET
columns by their string
value rather than by the string's relative position in the
set.
In an UPDATE
statement,
columns are updated from left to right. If you refer to an
updated column, you get the updated value instead of the
original value. For example, the following statement
increments KEY
by 2
,
not 1
:
mysql> UPDATE tbl_name
SET KEY=KEY+1,KEY=KEY+1;
You can refer to multiple temporary tables in the same query, but you cannot refer to any given temporary table more than once. For example, the following does not work:
mysql> SELECT * FROM temp_table, temp_table AS t2;
ERROR 1137: Can't reopen table: 'temp_table'
The optimizer may handle DISTINCT
differently when you are using “hidden” columns
in a join than when you are not. In a join, hidden columns
are counted as part of the result (even if they are not
shown), whereas in normal queries, hidden columns do not
participate in the DISTINCT
comparison.
An example of this is:
SELECT DISTINCT mp3id FROM band_downloads WHERE userid = 9 ORDER BY id DESC;
and
SELECT DISTINCT band_downloads.mp3id FROM band_downloads,band_mp3 WHERE band_downloads.userid = 9 AND band_mp3.id = band_downloads.mp3id ORDER BY band_downloads.id DESC;
In the second case, using MySQL Server 3.23.x, you may get
two identical rows in the result set (because the values in
the hidden id
column may differ).
Note that this happens only for queries that do not have the
ORDER BY
columns in the result.
If you execute a PROCEDURE
on a query
that returns an empty set, in some cases the
PROCEDURE
does not transform the columns.
Creation of a table of type MERGE
does
not check whether the underlying tables are compatible
types.
If you use ALTER TABLE
to add
a UNIQUE
index to a table used in a
MERGE
table and then add a normal index
on the MERGE
table, the key order is
different for the tables if there was an old,
non-UNIQUE
key in the table. This is
because ALTER TABLE
puts
UNIQUE
indexes before normal indexes to
be able to detect duplicate keys as early as possible.