Erreur MySQL 1118 (Ligne de taille trop grande) lors de la restauration de Django-mailer base de données

J'ai perdu un travail de production de la base de données à partir d'un django app et suis en train de migrer vers mon environnement local de développement. Le serveur de production pistes de MySQL 5.1, et localement j'ai 5.6.

Lors de la migration de django-mailer "messagelog" table, je suis en cours d'exécution dans la terrible Erreur 1118:

ERROR 1118 (42000) at line 2226: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

J'ai lu beaucoup de choses en ligne à propos de cette erreur, mais rien n'a résolu mon problème.

N. B. Cette erreur est pas en provenance de la création de la table, mais plutôt l'insertion d'une ligne avec de jolies gros volumes de données.

Notes:

  1. La innodb_file_format et innodb_file_format_max les variables sont définies de Barracuda.
  2. La ROW_FORMAT est mis à la DYNAMIQUE de création de table.
  3. La table ne sont pas très nombreuses colonnes. Le schéma ci-dessous:

    +----------------+------------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +----------------+------------+------+-----+---------+----------------+
    | id | int(11) | NO | PRI | NULL | auto_increment |
    | message_data | longtext | NO | | NULL | |
    | when_added | datetime | NO | | NULL | |
    | priority | varchar(1) | NO | | NULL | |
    | when_attempted | datetime | NO | | NULL | |
    | result | varchar(1) | NO | | NULL | |
    | log_message | longtext | NO | | NULL | |
    +----------------+------------+------+-----+---------+----------------+

Encore une fois, l'erreur se produit UNIQUEMENT lorsque j'essaie d'insérer un assez grand (message_data est d'environ 5 méga-octets) de ligne; la création de la table fonctionne bien, et environ 500 000 lignes sont ajoutées à l'amende juste avant la panne.

Je suis à court d'idées; j'ai essayé d'DYANMIC et la compression des formats de lignes, et j'ai triple vérifié les valeurs de la innodb variables:

mysql> show variables like "%innodb_file%";
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| innodb_file_format | Barracuda |
| innodb_file_format_check | ON |
| innodb_file_format_max | Barracuda |
| innodb_file_per_table | ON |
+--------------------------+-----------+

Le code de création (à partir de SHOW CREATE TABLE) ressemble à:

CREATE TABLE `mailer_messagelog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`message_data` longtext NOT NULL,
`when_added` datetime NOT NULL,
`priority` varchar(1) NOT NULL,
`when_attempted` datetime NOT NULL,
`result` varchar(1) NOT NULL,
`log_message` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=869906 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC

OriginalL'auteur Greg Humphreys | 2014-08-14