#### 27.12.20.11 Error Summary Tables

[]()[]()[]()[]()[]()[]()[]()[]()[]()[]()

 The Performance Schema maintains summary tables for aggregating statistical information about server errors (and warnings). For a list of server errors, see [Server Error Message Reference](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html).

 Collection of error information is controlled by the `error` instrument, which is enabled by default. Timing information is not collected.

 Each error summary table has three columns that identify the error:

* `ERROR_NUMBER` is the numeric error value. The value is unique.

* `ERROR_NAME` is the symbolic error name corresponding to the `ERROR_NUMBER` value. The value is unique.

* `SQLSTATE` is the SQLSTATE value corresponding to the `ERROR_NUMBER` value. The value is not necessarily unique.

 For example, if `ERROR_NUMBER` is 1050, `ERROR_NAME` is [`ER_TABLE_EXISTS_ERROR`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_table_exists_error) and `SQLSTATE` is `42S01`.

 Example error event summary information:

```
mysql> SELECT *
       FROM performance_schema.events_errors_summary_global_by_error
       WHERE SUM_ERROR_RAISED <> 0\G
*************************** 1. row ***************************
     ERROR_NUMBER: 1064
       ERROR_NAME: ER_PARSE_ERROR
        SQL_STATE: 42000
 SUM_ERROR_RAISED: 1
SUM_ERROR_HANDLED: 0
       FIRST_SEEN: 2016-06-28 07:34:02
        LAST_SEEN: 2016-06-28 07:34:02
*************************** 2. row ***************************
     ERROR_NUMBER: 1146
       ERROR_NAME: ER_NO_SUCH_TABLE
        SQL_STATE: 42S02
 SUM_ERROR_RAISED: 2
SUM_ERROR_HANDLED: 0
       FIRST_SEEN: 2016-06-28 07:34:05
        LAST_SEEN: 2016-06-28 07:36:18
*************************** 3. row ***************************
     ERROR_NUMBER: 1317
       ERROR_NAME: ER_QUERY_INTERRUPTED
        SQL_STATE: 70100
 SUM_ERROR_RAISED: 1
SUM_ERROR_HANDLED: 0
       FIRST_SEEN: 2016-06-28 11:01:49
        LAST_SEEN: 2016-06-28 11:01:49
```

 Each error summary table has one or more grouping columns to indicate how the table aggregates errors:

* [`events_errors_summary_by_account_by_error`](performance-schema-error-summary-tables.html) has `USER`, `HOST`, and `ERROR_NUMBER` columns. Each row summarizes events for a given account (user and host combination) and error.

* [`events_errors_summary_by_host_by_error`](performance-schema-error-summary-tables.html) has `HOST` and `ERROR_NUMBER` columns. Each row summarizes events for a given host and error.

* [`events_errors_summary_by_thread_by_error`](performance-schema-error-summary-tables.html) has `THREAD_ID` and `ERROR_NUMBER` columns. Each row summarizes events for a given thread and error.

* [`events_errors_summary_by_user_by_error`](performance-schema-error-summary-tables.html) has `USER` and `ERROR_NUMBER` columns. Each row summarizes events for a given user and error.

* [`events_errors_summary_global_by_error`](performance-schema-error-summary-tables.html) has an `ERROR_NUMBER` column. Each row summarizes events for a given error.

 Each error summary table has these summary columns containing aggregated values:

* `SUM_ERROR_RAISED`

   This column aggregates the number of times the error occurred.

* `SUM_ERROR_HANDLED`

   This column aggregates the number of times the error was handled by an SQL exception handler.

* `FIRST_SEEN`, `LAST_SEEN`

   Timestamp indicating when the error was first seen and most recently seen.

 A `NULL` row in each error summary table is used to aggregate statistics for all errors that lie out of range of the instrumented errors. For example, if MySQL Server errors lie in the range from *`M`* to *`N`* and an error is raised with number *`Q`* not in that range, the error is aggregated in the `NULL` row. The `NULL` row is the row with `ERROR_NUMBER=0`, `ERROR_NAME=NULL`, and `SQLSTATE=NULL`.

 The error summary tables have these indexes:

* [`events_errors_summary_by_account_by_error`](performance-schema-error-summary-tables.html):

  * Primary key on (`USER`, `HOST`, `ERROR_NUMBER`)

* [`events_errors_summary_by_host_by_error`](performance-schema-error-summary-tables.html):

  * Primary key on (`HOST`, `ERROR_NUMBER`)

* [`events_errors_summary_by_thread_by_error`](performance-schema-error-summary-tables.html):

  * Primary key on (`THREAD_ID`, `ERROR_NUMBER`)

* [`events_errors_summary_by_user_by_error`](performance-schema-error-summary-tables.html):

  * Primary key on (`USER`, `ERROR_NUMBER`)

* [`events_errors_summary_global_by_error`](performance-schema-error-summary-tables.html):

  * Primary key on (`ERROR_NUMBER`)

[`TRUNCATE TABLE`](truncate-table.html) is permitted for error summary tables. It has these effects:

* For summary tables not aggregated by account, host, or user, truncation resets the summary columns to zero or `NULL` rather than removing rows.

* For summary tables aggregated by account, host, or user, truncation removes rows for accounts, hosts, or users with no connections, and resets the summary columns to zero or `NULL` for the remaining rows.

 In addition, each error summary table that is aggregated by account, host, user, or thread is implicitly truncated by truncation of the connection table on which it depends, or truncation of [`events_errors_summary_global_by_error`](performance-schema-error-summary-tables.html). For details, see [Section 27.12.8, “Performance Schema Connection Tables”](performance-schema-connection-tables.html).

