sql >> Database >  >> RDS >> Mysql

Wijzig limiet voor Mysql Rijgrootte te groot

De vraag is gesteld op serverfault ook.

Misschien wil je een kijkje nemen in dit artikel wat veel verklaart over MySQL-rijgroottes. Het is belangrijk op te merken dat zelfs als u TEXT- of BLOB-velden gebruikt, uw rijgrootte nog steeds meer dan 8K kan zijn (limiet voor InnoDB), omdat het de eerste 768 bytes voor elk veld inline op de pagina opslaat.

De eenvoudigste manier om dit op te lossen, is door het Barracuda-bestandsformaat te gebruiken met InnoDB. Dit lost het probleem in feite helemaal op door alleen de 20 byte-aanwijzer naar de tekstgegevens op te slaan in plaats van de eerste 768 bytes op te slaan.

De methode die daar werkte voor de OP was:

  1. Voeg het volgende toe aan de my.cnf bestand onder [mysqld] sectie.

    innodb_file_per_table=1
    innodb_file_format = Barracuda
    
  2. ALTER de te gebruiken tabel ROW_FORMAT=COMPRESSED .

    ALTER TABLE nombre_tabla
        ENGINE=InnoDB
        ROW_FORMAT=COMPRESSED 
        KEY_BLOCK_SIZE=8;
    

Het is mogelijk dat het bovenstaande uw problemen nog steeds niet oplost. Het is een bekende (en geverifieerde) bug met de InnoDB engine, en een tijdelijke oplossing voor nu is om terug te vallen op MyISAM motor als tijdelijke opslag. Dus, in uw my.cnf bestand:

internal_tmp_disk_storage_engine=MyISAM


  1. Geaggregeerde functies gebruiken (SUM, AVG, MAX, MIN, COUNT, DISTINCT) in MySQL

  2. Hoe TRY_CONVERT() werkt in SQL Server

  3. Hoe kan ik de volledige rechten van de MySQL-rootgebruiker herstellen?

  4. Meerdere kolommen bijwerken in MySQL