Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL - Как да заобиколите ограничението за размера на реда от 66 KB

Приетият отговор е грешен (или поне доста убеден) - аз лично не искам данни да се съхраняват извън моята база данни, тъй като това създава усложнения по отношение на процедурите за архивиране и транзакционни заявки.

Както други посочиха, в ръководството многократно се посочва, че колоните BLOB и TEXT не се отчитат към общия размер на реда, но за съжаление, с настройките за конфигурация по подразбиране, това не е вярно и в крайна сметка получавате това съобщение за грешка. (Съобщението за грешка няма никакъв смисъл, защото ви казва да използвате TEXT вместо VARCHAR, за да разрешите проблема – който вече сте.)

Причината за това ограничение е механизмът за съхранение по подразбиране, Antelope , който съхранява първите 768 байта колони с променлива дължина в реда - и възможно решение е да използвате INNODB и да превключите своя механизъм за съхранение към алтернативния Barracuda механизъм за съхранение:

SET GLOBAL innodb_file_format=Barracuda;

Това няма да има незабавен ефект, тъй като тази настройка е по подразбиране за новите файлове на базата данни - така че ще трябва да премахнете и да създадете отново цялата си база данни.

Като алтернатива, превключете към Barracuda (както по-горе) и след това (в допълнение) превключете към стратегията файл на маса:

SET GLOBAL innodb_file_per_table=ON;

Отново, това няма да има незабавен ефект, тъй като и двете настройки са по подразбиране за нови таблици - така че отново ще трябва да пуснете и да създадете отново таблицата.

Ако погледнете в папката с данни на MySQL, след като направите това, можете да потвърдите, че са създадени отделни файлове, напр. за база данни с име "data" и таблица с име "test", трябва да видите файл с име "data/test/bigtable.ibd".

Ако не ви харесва да променяте глобалните настройки в MySQL, опитайте SET SESSION вместо SET GLOBAL , напр. непосредствено преди да стартирате вашия CREATE TABLE изявления.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте временна таблица в израз SELECT без отделна CREATE TABLE

  2. CONV() функция в снежинка

  3. MySQL - Код на грешка 1215, не може да добави ограничение за външен ключ

  4. Mysql Как да изберете само от колона, ако колоната съществува

  5. MySQL потребителски достъп - специфичен за таблицата