31 lines
1.3 KiB
SQL
31 lines
1.3 KiB
SQL
-- 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;
|