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

Промяна на ограничението за Mysql размер на ред е твърде голям

Въпросът е зададен на serverfault също.

Може да искате да разгледате тази статия което обяснява много за размерите на редовете в MySQL. Важно е да се отбележи, че дори и да използвате полета TEXT или BLOB, размерът на вашия ред все още може да бъде над 8K (ограничение за InnoDB), тъй като той съхранява първите 768 байта за всяко поле, вградено в страницата.

Най-лесният начин да поправите това е да използвате файлов формат Barracuda с InnoDB. Това основно се отървава от проблема като цяло, като се съхранява само 20-байтовият указател към текстовите данни, вместо да се съхраняват първите 768 байта.

Методът, който работеше за ОП там беше:

  1. Добавете следното към my.cnf файл под [mysqld] раздел.

    innodb_file_per_table=1
    innodb_file_format = Barracuda
    
  2. ALTER таблицата да се използва ROW_FORMAT=COMPRESSED .

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

Има вероятност горното все още да не разреши проблемите ви. Това е известен (и проверен) бъг с InnoDB двигател и временно решение за момента е да се върнем към MyISAM двигател като временно съхранение. И така, във вашия my.cnf файл:

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. Мога ли да възстановя една таблица от пълен mysql mysqldump файл?

  2. Как да задам параметри ORDER BY, използвайки подготвен PDO израз?

  3. Как да направите заявки за присъединяване с помощта на Sequelize на Node.js

  4. Как мога да преброя броя на редовете, върнати от MySQL заявка?

  5. ENUM (Enumeration) Тип данни в MySQL:Топ 12 факта и полезни съвети