Majic Projects
Majic Ansible Roles
Go to the previous open issue
Go to the previous issue (open or closed)
star_faded.png
Please log in to bookmark issues
icon_project.png Majic Ansible Roles / Open Enhancement MAR-237 Support for using utfmb4 encoding for database server
Go to the next issue (open or closed)
Go to the next open issue
branko (@branko) has been working on this issue since May 14, 2025 (20:47)
Issue basics
  • Type of issue
    Enhancement
  • Category
    General
  • Targetted for
    9.0.0
  • Status
    Being worked on
  • Progress
  • Priority
    Must fix before next release
User pain
  • Type of bug
    Not triaged
  • Likelihood
    Not triaged
  • Effect
    Not triaged
Affected by this issue (0)
There are no items
People involved
Times and dates
  • Posted at
  • Last updated
  • Estimated time
    4 hours
  • Time spent
    3 hours
    Click here to see time logged against this issue
Issue details
Attachments (0)
There is nothing attached to this issue
Duplicate issues (0)
This issue does not have any duplicates
Description

The database_server role installs and configures MariaDB database server, which can then be used as database storage by any application.

Amongst other items, the role takes care of configuring the default encoding, collation etc, trying to set sane defaults. At the moment this means using the legacy utf8 encoding. However, this encoding has long been considered deprecated since it cannot properly handle all the characters normally provided by modern Unicode (such as a bunch of different smileys etc).

In order to improve compatibility and allow wider range of Unicode characters to be used, a switch to utf8mb4 encoding (and related collation etc) is required.

Since the switch is non-trivial for existing applications, and manual process may be required to ensure correctness when switching form utf8 to utf8mb4, it would be useful to introduce support for utf8mb4 as an option for specific databases on the server. This way applications can be switched over one-by-one instead of in one big swoop, thus reducing both the pressure when upgrading to latest Majic Ansible Roles, as well as making loss of data less likely.

The following should be done:

  • Update the database_server and database roles.
    • Add option to enable/use of utf8mb4 for encoding/collation. The utf8 should still remain the default.
    • Ensure that all relevant database operations (like backups/restores) are still functioning correctly and that they employ the correct encoding and collation.
    • Introduce fail/pass tests that check if utf8mb4 is functioning correctly (whether the emojis etc are stored without issues).
  • Update role reference documentation.
    • Document the upgrade process for existing databases. Emphasize that the operation is non-trivial, and that it requires downtime for applications that utilise the database server.
  • Update usage instructions.
  • Update release notes.
Todos (0 / 0)
Issue created