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

MYSQL — Jak obejść limit rozmiaru wiersza wynoszący 66 KB

Przyjęta odpowiedź jest błędna (lub przynajmniej dość opiniotwórcza) - osobiście nie chcę, aby dane były przechowywane poza moją bazą danych, ponieważ powoduje to komplikacje w zakresie procedur tworzenia kopii zapasowych i zapytań transakcyjnych.

Jak zauważyli inni, podręcznik wielokrotnie stwierdza, że ​​kolumny BLOB i TEXT nie liczą się do całkowitego rozmiaru wiersza, ale niestety przy domyślnych ustawieniach konfiguracji nie jest to prawdą i w końcu otrzymujesz ten komunikat o błędzie. (Komunikat o błędzie nie ma żadnego sensu, ponieważ mówi ci, aby użyć TEXT zamiast VARCHAR do rozwiązania problemu - którym już jesteś).

Powodem tego ograniczenia jest domyślny mechanizm przechowywania, Antylopa , który przechowuje pierwsze 768 bajtów kolumn o zmiennej długości w wierszu — a możliwym rozwiązaniem jest użycie INNODB i przełączenie mechanizmu przechowywania na alternatywny Barrakuda mechanizm przechowywania:

SET GLOBAL innodb_file_format=Barracuda;

Nie przyniesie to natychmiastowego efektu, ponieważ to ustawienie jest domyślne dla nowych plików bazy danych - więc będziesz musiał usunąć i odtworzyć całą bazę danych.

Alternatywnie, przełącz się na Barracuda (jak wyżej), a następnie (dodatkowo) przełącz się na strategię plik na tabelę:

SET GLOBAL innodb_file_per_table=ON;

Ponownie, nie przyniesie to natychmiastowego efektu, ponieważ oba ustawienia są domyślne dla nowych tabel - więc znowu będziesz musiał usunąć i ponownie utworzyć tabelę.

Jeśli po wykonaniu tej czynności zajrzysz do folderu danych MySQL, możesz potwierdzić, że zostały utworzone osobne pliki, np. dla bazy danych o nazwie "data" i tabeli o nazwie "test", powinieneś zobaczyć plik o nazwie "data/test/bigtable.ibd".

Jeśli nie lubisz zmieniać globalnych ustawień w MySQL, spróbuj SET SESSION zamiast SET GLOBAL , np. bezpośrednio przed uruchomieniem CREATE TABLE oświadczenia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie zapytania MySQL do przechodzenia przez wiersze w celu utworzenia rekurencyjnego drzewa

  2. Zmień kolumnę MySQL na AUTO_INCREMENT

  3. proste zapytanie SQL dające nieprawidłowe użycie funkcji grupy

  4. obliczyć różnice między dwoma wierszami w SQL

  5. Jak zaimportować plik Excela do MySQL Workbench?