> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/server/reference/error-codes/mariadb-error-codes-1000-to-1099/e1020.md).

# Error 1020: Record has changed since last read in table

| Error Code | SQLSTATE | Error         | Description                                      |
| ---------- | -------- | ------------- | ------------------------------------------------ |
| 1020       | HY000    | ER\_CHECKREAD | Record has changed since last read in table '%s' |

> This error is more common in MariaDB 11.8 and later due to changes in snapshot isolation behavior. For more information, see the [upgrade guide](/docs/server/server-management/install-and-upgrade-mariadb/upgrading/mariadb-community-server-upgrade-paths/upgrading-from-mariadb-11-4-to-mariadb-11-8.md) and [innodb\_snapshot\_isolation](/docs/server/server-usage/storage-engines/innodb/innodb-system-variables.md#innodb_snapshot_isolation) pages.

## Possible Causes and Solutions

When InnoDB returns this error, it results in a **full transaction rollback**, not just a statement rollback. For that reason, this error should be treated similarly to a deadlock ([ER\_LOCK\_DEADLOCK](/docs/server/reference/error-codes/mariadb-error-codes-1200-to-1299/e1213.md)) or a lock wait timeout ([ER\_LOCK\_WAIT\_TIMEOUT](/docs/server/reference/error-codes/mariadb-error-codes-1200-to-1299/e1205.md)).

Try restarting the transaction.

<sub>*This page is licensed: CC BY-SA / Gnu FDL*</sub>

{% @marketo/form formId="4316" %}
