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 
(lang,componentid,stringid,original,master,timemodified,outdated,local,timecustomized) 
VALUES(?,?,?,?,?,?,?,?,?)
-- 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.


Revision #2
Created Mon, Jun 5, 2023 2:44 AM by Moodle Wiki
Updated Mon, Jun 5, 2023 2:54 AM by Moodle Wiki