sql >> Database >  >> RDS >> Mysql

Zijn er nadelen bij het wijzigen van mysql-tabelcodering?

Gevaar Ik denk dat dat ALTER zal bestaande tekst vernietigen.

Ook, ... Je 'naam' ziet er Chinees uit, dus ik vermoed dat je Chinese karakters wilt opslaan? In dat geval moet u utf8mb4 . gebruiken , niet alleen utf8 . Dit komt omdat sommige Chinese karakters 4 bytes in beslag nemen (en niet in de Unicode BMP staan).

Ik denk dat je 2 stappen nodig hebt :

ALTER TABLE notebooks MODIFY comments BLOB;
ALTER TABLE notebooks MODIFY comments TEXT
          CHARACTER SET utf8mb4  COLLATE utf8mb4_general_520_ci;

Anders de latin1 tekens wordt "geconverteerd" naar ut8. Maar als je echt Chinees in de kolom hebt staan, heb je geen latin1. De bovenstaande wijziging in twee stappen (1) schakelt alle kennis van de tekenset uit en (2) stelt vast dat de bytes echt utf8mb4-gecodeerd zijn.

Om veiliger te zijn , doe eerst

RENAME TABLE notebooks TO old;
CREATE TABLE notebooks LIKE old;
INSERT INTO notebooks SELECT * FROM old;

Voer vervolgens de twee ALTER's uit en test het resultaat. Als er problemen zijn, kunt u RENAME om de oude kopie terug te krijgen.



  1. snelheid invoegen in mysql vs cassandra

  2. Een SOx-compliancechecklist voor PostgreSQL

  3. PHP, SQL-limietquery door php-variabele

  4. MariaDB JSON_INSERT() uitgelegd