Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Limit zmian dla rozmiaru wiersza Mysql jest zbyt duży

Pytanie zostało zadane na usterka serwera też.

Możesz rzucić okiem na ten artykuł co wyjaśnia wiele o rozmiarach wierszy MySQL. Należy pamiętać, że nawet jeśli używasz pól TEXT lub BLOB, rozmiar wiersza może nadal przekraczać 8K (limit dla InnoDB), ponieważ przechowuje on pierwsze 768 bajtów dla każdego pola w linii na stronie.

Najprostszym sposobem rozwiązania tego problemu jest użycie formatu pliku Barracuda z InnoDB. To w zasadzie całkowicie eliminuje problem, przechowując tylko 20-bajtowy wskaźnik do danych tekstowych zamiast przechowywania pierwszych 768 bajtów.

Metoda, która zadziałała w przypadku PO była:

  1. Dodaj następujące do my.cnf plik w [mysqld] sekcja.

    innodb_file_per_table=1
    innodb_file_format = Barracuda
    
  2. ALTER tabela do użycia ROW_FORMAT=COMPRESSED .

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

Istnieje możliwość, że powyższe nadal nie rozwiąże twoich problemów. Jest to znany (i zweryfikowany) błąd z InnoDB silnik, a tymczasową poprawką jest powrót do MyISAM silnik jako magazyn tymczasowy. Tak więc w swoim my.cnf plik:

internal_tmp_disk_storage_engine=MyISAM


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać SUBSTRING() w MySQL

  2. Podstawowe porównanie administracyjne między Oracle, MSSQL, MySQL, PostgreSQL

  3. Usuń zapytanie, aby usunąć wiersze w MySQL

  4. Jak działa funkcja MID() w MySQL

  5. Kolumna zmiany nazwy MySQL