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

Как да накарам MySQL да обработва UTF-8 правилно

Актуализация:

Кратък отговор - Почти винаги трябва да използвате utf8mb4 набор от символи и utf8mb4_unicode_ci съпоставяне.

За да промените базата данни:

ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Вижте:

Оригинален отговор:

MySQL 4.1 и по-нови имат набор от символи по подразбиране UTF-8. Можете да потвърдите това във вашия my.cnf файл, не забравяйте да зададете и двете клиент и сървър (default-character-set и character-set-server ).

Ако имате съществуващи данни, които искате да конвертирате в UTF-8, изхвърлете базата си данни и я импортирайте обратно като UTF-8, като се уверите:

  • използвайте SET NAMES utf8 преди да направите заявка/вмъкнете в базата данни
  • използвайте DEFAULT CHARSET=utf8 при създаване на нови таблици
  • в този момент вашият MySQL клиент и сървър трябва да са в UTF-8 (вижте my.cnf ). не забравяйте, че всички езици, които използвате (като PHP), също трябва да бъдат UTF-8. Някои версии на PHP ще използват собствена MySQL клиентска библиотека, която може да не е наясно с UTF-8.

Ако искате да мигрирате съществуващи данни, не забравяйте първо да архивирате! Може да се случи много странно нарязване на данни, когато нещата не вървят по план!

Някои ресурси:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Работни натоварвания на хибридна OLTP/аналитична база данни:репликиране на MySQL данни към ClickHouse

  2. Как да поръчам по дата в MySQL

  3. mysql централна/кръстосана заявка

  4. Онлайн миграция от MySQL 5.6 без GTID към MySQL 5.7 с GTID

  5. Отказ и отказ на Amazon RDS