After db migration, Change Log tab on Contact pages doesn't load due to error about creating temporary tables using memory engine.
I could recreate the error with the following query:
mysql> CREATE TEMPORARY TABLE `civicrm_tmp_e_logsummary_6d49479e46cb91cb350f7e5f5b93e7ca` (id int(10), log_civicrm_entity_log_grouping varchar(32), log_action varchar(64), log_type varchar(64), log_user_id int(10), log_date timestamp, altered_contact varchar(128), altered_contact_id int(10), log_conn_id varchar(17), is_deleted tinyint(4), display_name varchar(128)) ENGINE=MEMORY COLLATE utf8mb3_unicode_ci;
ERROR 3161 (HY000): Storage engine MEMORY is disabled (Table creation is disallowed).
The error is a bit misleading, because MEMORY engine is actually enabled:
mysql> SELECT ENGINE, SUPPORT FROM information_schema.ENGINES WHERE ENGINE = 'MEMORY';
+--------+---------+
| ENGINE | SUPPORT |
+--------+---------+
| MEMORY | YES |
+--------+---------+
I've given the db user all privileges, but this didn't help.
mysql> GRANT ALL PRIVILEGES ON `dbuser`.* TO 'dbuser'@'%'; FLUSH PRIVILEGES;
Since this is managed db, I can't give SUPER user privileges.
One workaround is to change to simplified logging at /civicrm/admin/setting/misc?reset=1 (then it works with simplified view), however I need detailed logging to be enabled.
Is this issue db or Civi problem? Either way, is there any solution for this?
Like maybe there a way in config to force CiviCRM to create temporary tables using different engine (ENGINE=InnoDB
)?
Or maybe upgrading CiviCRM to the newer version could help?