Error opening language pack (incorrect string value)

If you get an error like this when opening the language pack, it is indicating that your database, database tables (particularly mdl_tool_customlang) or your config.php is not using an utf8mb4 collation. For example utf8mb4_general_ci.

Debug info: Incorrect string value: '\xF0\x9F\x91\x8B' for column 'original' at row 1
INSERT INTO mdl_tool_customlang 
-- line 1408 of /lib/dml/mysqli_native_moodle_database.php: 
call to mysqli_native_moodle_database->insert_record_raw()
[array (
0 => 'en',
1 => '1',
2 => 'welcomeback',
3 => 'Welcome back, {$a->firstname}! πŸ‘‹',
4 => 'Welcome back, {$a->firstname}! πŸ‘‹',
5 => 1685932707,
6 => 0,
7 => NULL,
8 => NULL,
Error code: dmlwriteexception 

You can fix the database tables using the tool (e.g.):

admin/cli/ php admin/cli/mysql_collation.php --collation=utf8mb4_general_ci

Don't forget to also set your database to the correct collation.

Finally, you need to check what you have set in config.php as well e.g.

$CFG->dboptions = array (
  'dbpersist' => 0,
  'dbport' => '',
  'dbsocket' => '',
  'dbcollation' => 'utf8mb4_general_ci',

If the config.php file is still using something like utf8 you'll need to update it AND clear the cache. For this to take effect.

No Comments
Back to top