After enabling utf8mb4 on 7.50, cannot enable update module I upgraded to 7.50, ran the utf8mb4 convert drush commmand, and enabled utf8mb4 in settings.php.  Before running the utf8mb4 convert drush command, I did have to convert several columns manually like this:

ALTER TABLE commerce_order CHANGE order_number order_number VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;


I tested my site and as far as I can tell everything is working fine.

However, when I try to enable the update module (which had been uninstalled on the site), I get the following error:

cpu:update pk$ drush @mysite en update
PTY allocation request failed on channel 0
The following extensions will be enabled: update
Do you really want to continue? (y/n): y
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1071    [error]
Specified key was too long; max key length is 767 bytes in
/srv/bindings/d767913ee30941f3847c9361d2d787ba/code/includes/database/database.inc:2204
Stack trace:
#0
/srv/bindings/d767913ee30941f3847c9361d2d787ba/code/includes/database/database.inc(2204):
PDOStatement-&gt;execute(Array)
#1
/srv/bindings/d767913ee30941f3847c9361d2d787ba/code/includes/database/database.inc(683):
DatabaseStatementBase-&gt;execute(Array, Array)
#2
/srv/bindings/d767913ee30941f3847c9361d2d787ba/code/includes/database/schema.inc(664):
DatabaseConnection-&gt;query('CREATE TABLE {c...')
#3
/srv/bindings/d767913ee30941f3847c9361d2d787ba/code/includes/database/database.inc(2753):
DatabaseSchema-&gt;createTable('cache_update', Array)
#4
/srv/bindings/d767913ee30941f3847c9361d2d787ba/code/includes/common.inc(7109):
db_create_table('cache_update', Array)
#5
/srv/bindings/d767913ee30941f3847c9361d2d787ba/code/includes/module.inc(479):
drupal_install_schema('update')
#6 /opt/pantheon/drush-8/commands/core/drupal/environment_7.inc(143):
module_enable(Array)
#7 /opt/pantheon/drush-8/commands/pm/pm.drush.inc(1167):
drush_module_enable(Array)
#8 /opt/pantheon/drush-8/includes/command.inc(366):
drush_pm_enable('update')
#9 /opt/pantheon/drush-8/includes/command.inc(217):
_drush_invoke_hooks(Array, Array)
#10 /opt/pantheon/drush-8/includes/command.inc(185):
drush_command('update')
#11 /opt/pantheon/drush-8/lib/Drush/Boot/BaseBoot.php(67):
drush_dispatch(Array)
#12 /opt/pantheon/drush-8/includes/preflight.inc(66):
Drush\Boot\BaseBoot-&gt;bootstrap_and_dispatch()
#13 /opt/pantheon/drush-8/drush.php(12): drush_main()
#14 {main}


When I enable the update module, it isn't able to create the update or cache_update tables.  How can I fix this?
Hacking core, not a great answer.  This is just the best I have found so far.

In modules/update/update.install:

/**
 * Implements hook_schema().
 */
function update_schema() {
  $schema['cache_update'] = drupal_get_schema_unprocessed('system', 'cache');
  $schema['cache_update']['description'] = 'Cache table for the Update module to store information about available releases, fetched from central server.';
  return $schema;
}


So I went to modules/system/system.install:

  $schema['cache'] = array(
    'description' =&gt; 'Generic cache table for caching things not separated out into their own tables. Contributed modules may also use this to store cached items.',
    'fields' =&gt; array(
      'cid' =&gt; array(
        'description' =&gt; 'Primary Key: Unique cache ID.',
        'type' =&gt; 'varchar',
        'length' =&gt; 255,
        'not null' =&gt; TRUE,
        'default' =&gt; '',
      ),
      'data' =&gt; array(
        'description' =&gt; 'A collection of data to cache.',
        'type' =&gt; 'blob',
        'not null' =&gt; FALSE,
        'size' =&gt; 'big',
      ),
      'expire' =&gt; array(
        'description' =&gt; 'A Unix timestamp indicating when the cache entry should expire, or 0 for never.',
        'type' =&gt; 'int',
        'not null' =&gt; TRUE,
        'default' =&gt; 0,
      ),
      'created' =&gt; array(
        'description' =&gt; 'A Unix timestamp indicating when the cache entry was created.',
        'type' =&gt; 'int',
        'not null' =&gt; TRUE,
        'default' =&gt; 0,
      ),
      'serialized' =&gt; array(
        'description' =&gt; 'A flag to indicate whether content is serialized (1) or not (0).',
        'type' =&gt; 'int',
        'size' =&gt; 'small',
        'not null' =&gt; TRUE,
        'default' =&gt; 0,
      ),
    ),
    'indexes' =&gt; array(
      'expire' =&gt; array('expire'),
    ),
    'primary key' =&gt; array('cid'),
  );


And I changed the length of the varchar for the primary key from 255 to 191.  Now I can enable and disable the update module properly.