MySQL Collations
It is important that correct collations be used in the MySQL database schema so that text comparisons work correctly and without error.
The chameleon/superticker database uses utf8mb4_unicode_ci
as the default collation for all tables and columns.
If there is ever a mismatch when doing comparisons - this can result in errors.
Find non-default collations
To find tables with non-default collations use the following query:
-- find tables with non-standard collations
SELECT
table_name,
table_collation
FROM information_schema.tables
WHERE table_schema = 'superticker'
AND table_collation is not null and table_collation != 'utf8mb4_unicode_ci';
To find columns with non-default collations use the following query:
-- find columns with non-standard collations
SELECT
table_name,
column_name,
character_set_name,
collation_name
FROM information_schema.columns c
WHERE table_schema = 'superticker'
and collation_name is not null and collation_name != 'utf8mb4_unicode_ci';
Â
Use cases that deviate
There can be use cases where the collation is changed for a client to support sorting and searching with their language specifics. This was done for a client in Denmark to improve the sorting in the Election Results.
ALTER TABLE elc_event CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_danish_ci ;
ALTER TABLE elc_office CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_danish_ci ;
ALTER TABLE elc_party CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_danish_ci ;
ALTER TABLE elc_candidate CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_danish_ci ;
ALTER TABLE elc_area CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_danish_ci ;
ALTER TABLE story_topic CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_danish_ci ;
ALTER TABLE story_playlist CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_danish_ci ;
Â