Erro MySQL – “Row size too large” ao restaurar um Backup

Ao restaurar um Backup noutro site, pode ocorrer um erro que diga:

“Could not restore query. MySQL has returned the error code 1118, with message ‘Row size too large (> 8126)'”

Ou em alternativa,

“Your server reached the maximum row size of the table”

Este problema é causado por o InnoDB ter atingido o tamanho máximo de linha e não conseguir armazenar mais dados.

Causa raiz

A causa raiz deste problema é que o motor de base de dados MySQL/MariaDB (InnoDB) tem um limite máximo de tamanho de linha. Quando esse limite é excedido, o motor de base de dados não consegue armazenar mais dados nessa linha. Este limite é tipicamente atingido ao tentar importar grandes conjuntos de dados ou quando a estrutura da tabela inclui grandes campos VARCHAR.

Passos gerais para resolver o erro Row Size Too Large

Geralmente, os passos para resolver isto são:

  1. Alterar os campos da tabela para TEXT ou BLOB em vez de usar VARCHAR grandes.
  2. Alterar o ROW_FORMAT da tabela para DYNAMIC.
  3. Definir o innodb_strict_mode como off.

Como estes passos envolvem alterações na configuração do servidor e na estrutura das tabelas WordPress, geralmente não são recomendados devido ao potencial de perda de dados e outros problemas.

Usar um filtro para que o restauro do Backup funcione

O nosso objetivo é importar os dados SQL do ficheiro de Backup para o site atual. Para alcançar esse objetivo, desativamos o innodb_strict_mode durante o processo de restauro.

Quando este erro ocorre, podes adicionar o código abaixo a um Must-Use plugin (MU-plugin) para desativar o innodb_strict_mode:

PHP
<?php
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');

Instruções passo a passo

  1. Liga-te ao teu site WordPress via FTP ou File Manager no painel de controlo do Hosting.
  2. Navega até à pasta wp-content/mu-plugins. Se a pasta mu-plugins não existir, cria-a.
  3. Dentro da pasta mu-plugins, cria um novo ficheiro PHP. Podes dar-lhe qualquer nome, por exemplo, disable-innodb-strict-mode.php.
  4. Edita o ficheiro PHP recém-criado e adiciona o seguinte código:
PHP
<?php
add_filter('wpstg.backup.restore.innodbStrictModeOff', '__return_true');
  1. Guarda e fecha o ficheiro. Agora, este código vai correr em cada carregamento de página, garantindo que o innodb_strict_mode está desativado durante o processo de restauro.
  2. Volta a tentar o processo de restauro a partir do teu Plugin de Backup. O erro já não deve ocorrer.

Nota importante

Esta é uma solução temporária para contornar o limite de tamanho de linha do MySQL durante o processo de restauro. Não é uma solução permanente para o problema, pois ter o innodb_strict_mode desativado pode levar a potenciais problemas de integridade dos dados. Após o processo de restauro, considera remover o MU-plugin ou desativar o filtro e consulta um especialista em base de dados para uma solução mais permanente para o problema do limite de tamanho de linha.

Artigos relacionados

Updated on May 23, 2026

Rene Hermenau

Autor: Rene Hermenau

About the author: René Hermenau is the founder of WP STAGING. He works on WordPress backups, staging, migrations, database handling, and safe deployment workflows.