1946
MariaDBERRORNotableViewHIGH confidence
View '%s'.'%s' has no definer information in the view file
Production Risk
High — the view is inaccessible until recreated.
What this means
The .frm file for a view is missing the DEFINER information, typically because the view was created by an older MySQL version or the file was manually edited.
Why it happens
- 1View was created by MySQL < 5.0 before DEFINER support was added.
- 2The view .frm file was manually modified and the definer line was removed.
- 3Incomplete import or migration of view definitions.
How to reproduce
trigger — this will error
trigger — this will error
SELECT * FROM old_view; -- triggers error when view definer is missing
expected output
ERROR 1946 (HY000): View 'db'.'old_view' has no definer information in the view file.
Fix
Recreate the view with an explicit DEFINER
Recreate the view with an explicit DEFINER
DROP VIEW IF EXISTS old_view; CREATE DEFINER='app_user'@'%' VIEW old_view AS SELECT ...;
Why this works
Recreating the view populates the DEFINER metadata correctly in the data dictionary.
What not to do
✕
Sources
Official documentation ↗
MySQL 8.0 — 1946 ER_VIEW_FRM_NO_USER
Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev