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

Мигриране на MySQL UTF8 към UTF8MB4 проблеми и въпроси

  1. Има ограничения за размера на ИНДЕКС. Сблъскахте се с ограничението, защото utf8mb4 се нуждае от до 4 байта на знак , където като utf8 са необходими само 3. Междувременно ограничението за размера на ИНДЕКС е в байтове .

„Решението“ е да решите какво да правите с индекса с големи размери. (повече по-долу)

2.

ALTER TABLE t CHANGE col col ...

е същото като по-логичното

ALTER TABLE t MODIFY col ...

Първият ви позволява да промените името на колоната, следователно две копия на името на колоната, когато не е необходимо да променяте името.

  1. Много вероятно сте имали VARCHAR(255) който отнема 767 байта в utf8 (3*255+2; "2" е размерът на полето за дължина). Еквивалентът в 4-байтовия utf8mb4 би бил (191) (4*191+2=766; няма място за повече от 191).

  2. Не видях статия за това. Подозирам, че това, което току-що казах, е повечето от това, което трябва да се каже.

Така че...

ПланА :Имате ли foo VARCHAR(255) и беше utf8? Данните в него винаги ли (сега и в бъдеще) са по-къси от 191 знака? Ако е така, просто направете ALTER.

ПланБ :Ако имате нужда от повече от 191, наистина ли имате нужда от ИНДЕКС? DROP INDEX може да е алтернатива.

ПланC :Или можете да използвате индекс с "префикс":INDEX(foo(191)) , оставяйки го VARCHAR(255) . Обикновено "префиксните" индекси са безполезни, но вие можете има случай на употреба, за който работи.

За да обсъдите това допълнително, моля, предоставете SHOW 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. Как да транспонирате редовете на таблицата на mysql в колони

  2. Всички връзки на WordPress пренасочват към двоен URL

  3. Mysql:няколко таблици или една голяма маса?

  4. Spark четене на данни от mysql паралелно

  5. Инсталиране на Percona/MySQL без надзор в Ubuntu