1991
MariaDBERRORNotableSchemaHIGH confidence

Cyclic reference in stored routines or views

Production Risk

Low — creation is rejected; existing data is unaffected.

What this means

A stored routine, view, or trigger references itself or creates a cycle of references that MySQL cannot resolve. MySQL does not support mutual recursion between objects in certain contexts.

Why it happens
  1. 1A view references another view that in turn references the first view.
  2. 2A stored procedure calls itself without a proper recursion depth check (in contexts where it is disallowed).
  3. 3Trigger chain creates a circular dependency.
How to reproduce
trigger — this will error
trigger — this will error
CREATE VIEW v1 AS SELECT * FROM v2;
CREATE VIEW v2 AS SELECT * FROM v1;

expected output

ERROR 1991 (HY000): Cyclic reference in view definition.

Fix

Refactor views to eliminate circular references

Refactor views to eliminate circular references
-- Break the cycle by querying base tables directly instead of circular views

Why this works

Removing the cycle resolves the dependency issue.

What not to do

Sources
Official documentation ↗

MySQL 8.0 — 1991 ER_CYCLIC_REFERENCE

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

← All MariaDB errors