sql >> Database teknologi >  >> RDS >> Mysql

Ændre grænse for Mysql rækkestørrelse for stor

Spørgsmålet er blevet stillet på serverfejl også.

Du kan eventuelt tage et kig på denne artikel som forklarer meget om MySQL rækkestørrelser. Det er vigtigt at bemærke, at selvom du bruger TEXT- eller BLOB-felter, kan din rækkestørrelse stadig være over 8K (grænse for InnoDB), fordi den gemmer de første 768 bytes for hvert felt inline på siden.

Den nemmeste måde at løse dette på er at bruge Barracuda-filformatet med InnoDB. Dette fjerner dybest set problemet fuldstændigt ved kun at gemme 20 byte-markøren til tekstdataene i stedet for at gemme de første 768 bytes.

Metoden der fungerede for OP der var:

  1. Tilføj følgende til my.cnf fil under [mysqld] afsnit.

    innodb_file_per_table=1
    innodb_file_format = Barracuda
    
  2. ALTER tabellen for at bruge ROW_FORMAT=COMPRESSED .

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

Der er en mulighed for, at ovenstående stadig ikke løser dine problemer. Det er en kendt (og verificeret) fejl med InnoDB motor, og en midlertidig løsning er indtil videre at falde tilbage til MyISAM motor som midlertidig opbevaring. Så i din my.cnf fil:

internal_tmp_disk_storage_engine=MyISAM


  1. Tilslutning til en MySQL-database i .NET

  2. hvordan man genopretter standby-database fra en manglende arkivlog

  3. Fix:Adgang nægtet for brugeren 'root'@'localhost' i MariaDB

  4. Overvejelser omkring kolonnerækkefølge i indekser og sorteringer