1434
MySQLERRORNotableViewsHIGH confidence

Recursive views are not allowed

Production Risk

Low — compile-time error; the view will not be created.

What this means

ER_VIEW_RECURSIVE (1434, SQLSTATE HY000) is raised when a view definition references itself, creating a recursive view which MySQL does not support.

Why it happens
  1. 1A view SELECT references the view itself by name
  2. 2A chain of views that ultimately loops back to the first view
How to reproduce
trigger — this will error
trigger — this will error
CREATE VIEW my_view AS
  SELECT * FROM my_view;  -- References itself

expected output

ERROR 1434 (HY000): `db`.`my_view` contains a recursive view definition

Fix

Rewrite using CTEs (MySQL 8.0+)

Rewrite using CTEs (MySQL 8.0+)
-- Use a recursive CTE instead:
WITH RECURSIVE cte AS (
  SELECT id, parent_id FROM categories WHERE parent_id IS NULL
  UNION ALL
  SELECT c.id, c.parent_id FROM categories c JOIN cte ON c.parent_id = cte.id
)
SELECT * FROM cte;

Why this works

Recursive CTEs are supported in MySQL 8.0+ and provide the recursive query capability without recursive views.

Version notes
MySQL 8.0

Use recursive CTEs (WITH RECURSIVE) as the supported alternative.

Sources
Official documentation ↗

MySQL 8.0 — 1434 ER_VIEW_RECURSIVE

Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev

← All MySQL errors