-- Fix collation inconsistency on saved_filters and ticket_attachments -- -- README.md Developer Notes #12: "Database collation: Use -- utf8mb4_general_ci (not unicode_ci) for new tables." These two tables -- were created with utf8mb4_unicode_ci instead, inconsistent with every -- other table in the schema. Mixed collations don't break anything by -- themselves, but any future query joining/comparing these columns -- against general_ci columns needs explicit COLLATE casts or hits -- "Illegal mix of collations" errors. -- -- Safe to re-run. ALTER TABLE `saved_filters` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- saved_filters.filter_criteria is pinned to utf8mb4_bin (for the -- json_valid() CHECK constraint) — restore that after the table-wide -- CONVERT TO above, which resets it to general_ci. MariaDB drops the -- inline CHECK when the column is MODIFYed, so re-add it explicitly. ALTER TABLE `saved_filters` MODIFY COLUMN `filter_criteria` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL; ALTER TABLE `saved_filters` DROP CONSTRAINT IF EXISTS `saved_filters_filter_criteria_json`; ALTER TABLE `saved_filters` ADD CONSTRAINT `saved_filters_filter_criteria_json` CHECK (json_valid(`filter_criteria`)); ALTER TABLE `ticket_attachments` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;