CiviCRM 4.7.10 --- WordPress 4.6

The following warning message appeared in CiviCRM System Status:

Your database is configured to use the MyISAM database engine. CiviCRM requires InnoDB. You will need to convert any MyISAM tables in your database to InnoDB. Using MyISAM tables will result in data integrity issues.

This message appeared 5 days after upgrading to 4.7.10 from 4.7.8. The table with the MyISAM engine was: civicrm_task_action_temp%. I corrected it in MySQL using:

ALTER TABLE civicrm_task_action_temp% ENGINE=InnoDB;

On inspecting the code, I found the following in civicrm\civicrm\CRM\Contact\Form\Task.php on line 145

$sql = "CREATE TABLE {$form->_componentTable} ( contact_id int primary key) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci";

and civicrm\civicrm\CRM\Export\BAO\Export.php on line 1494

CREATE TABLE {$exportTempTable} ( ... ) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

All other MyISAM tables are defined as TEMPORARY.

Prior to performing the upgrade, I cleaned the caches using CiviCRM/System Settings/Cleanup Caches and Update Paths. Hence the reason civicrm_task_action_temp% was recreated.

Hopefully, this fix can be included in the next update.

  • It also happened to me after 4.7.10 upgrade on Joomla! 3.6.2. Ty. – diegov Aug 18 '16 at 5:46
  • There's an old issue in JIRA that looks like it's related to this. I've seen this error pop up recently, but I'm trying to remember if I was working on a 4.7 site or a 4.6 one. It might be worth reopening the issue or creating an new one and flagging it related. issues.civicrm.org/jira/browse/CRM-15601 – Dan O'Brien Aug 19 '16 at 11:48
  • Happened on upgrade to 4.7.10 with Drupal as well. – Laryn - CEDC.org Aug 23 '16 at 16:58
  • Also on upgrade to 4.7.11 with Joomla. – Jern Aug 24 '16 at 8:04
  • I mean 4.7.10 of course – Jern Aug 24 '16 at 8:16

Based on Dan's pointer to https://issues.civicrm.org/jira/browse/CRM-15601 , it seems like this used to work. It probably regressed with https://github.com/civicrm/civicrm-core/commit/3fa9688a5 which introduced a very subtle change to how it ignores temp tables. Compare:

  • (Old) strpos($dao->Name, '_temp') !== FALSE
  • (New) TABLE_NAME NOT LIKE '%temp'

Proposed fix: https://github.com/civicrm/civicrm-core/pull/8930

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.