MySQL throws EE_UNKNOWN_LDML_TAG (code 90) when a DATE_FORMAT or STR_TO_DATE pattern contains an unsupported or misspelled LDML tag.
MySQL Error 90: EE_UNKNOWN_LDML_TAG appears when a DATE_FORMAT-related function meets an unsupported LDML tag in its format string. Correct the tag spelling or replace it with a valid ICU LDML keyword to resolve the failure.
Unknown LDML tag: '%.*s'. EE_UNKNOWN_LDML_TAG was added in 8.0.13.
MySQL raises EE_UNKNOWN_LDML_TAG when it parses a format string that contains an invalid or unsupported Locale Data Markup Language (LDML) tag. The error is returned by date and time functions such as DATE_FORMAT, TIME_FORMAT, STR_TO_DATE, and the JSON date functions introduced in MySQL 8.0.13.
The server relies on the ICU library for international formatting. When it encounters an LDML placeholder it does not recognize, it stops execution and returns error 90.
Queries fail immediately, causing application interruptions and potential data pipeline breakdowns.
Unsupported or mistyped LDML placeholders are the primary trigger. Tags like %Q or %E that are valid in strftime are not always valid in LDML, so copy-pasting legacy patterns can lead to the fault.
ICU version mismatches or disabling the ICU library at compile time can also surface the error.
The error can occur in computed columns, views, stored routines, or JSON path expressions, making it hard to trace when format strings are stored in metadata tables.
Identify the failing function call, locate the offending format string, and replace or remove the unknown tag. Refer to the MySQL 8.0 manual or ICU LDML reference for valid symbols.
Running SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
confirms the fix.
On servers compiled without ICU, enable the --with-icu
option or install a distribution package that includes full ICU support. Restart the instance and retest.
Legacy PHP code that passes %e
or %D
from strftime to MySQL DATE_FORMAT often fails. Replace them with LDML-compliant %d
or %E
equivalents. JSON date formatting with JSON_OBJECT()
must follow the same rules.
SQL generated by an ORM may embed locale-specific tags.
Configure the ORM to use ICU-compatible patterns, or sanitize input before it reaches MySQL.
Validate all format strings in unit tests using a simple SELECT DATE_FORMAT('2001-01-01','pattern')
check.
Keep an allow-list of approved LDML patterns in a shared code library.
Galaxy’s SQL editor highlights ICU-invalid LDML tags and offers AI autocomplete for safe patterns, stopping EE_UNKNOWN_LDML_TAG before queries reach production.
Error 92 EE_ILLEGAL_PARAMETER_VALUE surfaces when a DATE_FORMAT argument is out of range. Error 88 EE_UNKNOWN_CHARSET occurs if the specified charset is invalid. Both require validating input parameters and configuration before execution.
.
No. Any function that relies on ICU date formatting, including TIME_FORMAT and JSON date helpers, can raise this error.
Disabling ICU forces MySQL to fall back to limited formats and is not recommended. Fix the tag or upgrade ICU instead.
Error 90 was added in MySQL 8.0.13 alongside full ICU LDML support.
Galaxy flags invalid LDML tags in its editor, offers AI fixes, and lets teams endorse safe patterns, stopping bad queries before deployment.