Fix setup:db:status not recognizing JSON type in MariaDB #40507
+377
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description (*)
Fixes
bin/magento setup:db:statusincorrectly reporting schema mismatches for JSON columns when using MariaDB.Root Cause: When reading column definitions from
information_schema.COLUMNS, MariaDB reports JSON columns withDATA_TYPE = 'longtext'instead ofjson. This causes the schema comparison to always fail because the declared schema saysjsonbut the actual database reportslongtext.Solution: Query
information_schema.CHECK_CONSTRAINTSto find columns withjson_valid()CHECK constraints (which MariaDB automatically adds for JSON columns) and correct their type fromlongtexttojsonbefore comparison.Related Pull Requests
Fixed Issues (if relevant)
Manual testing scenarios (*)
quotetable has JSON columns in recent versions)bin/magento setup:db:statusQuestions or comments
Contribution checklist (*)
⭐ Support my work
Do you like the fix? Remember to react with "👍🏻" to get it merged faster,
Then Sponsor me on Github so I can spend more time on fixing issues like this one.
Learn more at https://github.com/sponsors/lbajsarowicz