log tables for CiviCRM Drupal Modules can cause WSODs after running upgrades when re-calculating
After every upgrade if you have detailed logging enabled then the log_tables are recalculated and any differences fixed up. This is to ensure that the triggers on the log tables work fine.
There is an issue with CiviCRM drupal modules and it comes down to a miss calculation between the create schema for the intitial log table v the compare differences function.
An example is
CREATE TABLE civicrm_member_roles_rules (
rule_id int(11) NOT NULL AUTO_INCREMENT,
rid int(10) unsigned NOT NULL,
type_id int(10) unsigned NOT NULL,
status_codes text NOT NULL,
PRIMARY KEY (rule_id)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
When the log table for that is created the AUTO_INCREMENT is correctly handled through https://github.com/civicrm/civicrm-core/blob/master/CRM/Logging/Schema.php#L709 However when the schema diff code runs. We only exclude the column id
https://github.com/civicrm/civicrm-core/blob/master/CRM/Logging/Schema.php#L628 as we assume that the id column will always be the AUTO_INCREMENT column whereas in the member_roles_rules example the AUTO INCREMENT column is actually role_id