sql >> Databasteknik >  >> RDS >> Mysql

MySQL teckenkodning förändring. Bevaras dataintegriteten?

Varje kolumn (teckensträngstyp). har sin egen teckenuppsättning och sorteringsmetadata.

Om, när kolumnen s datatyp specificerades (dvs. när den senast skapades eller ändrades), ingen teckenuppsättning/sortering angavs uttryckligen, då skulle tabellens standardteckenuppsättning och sortering användas för kolumnen.

Om, när tabellen specificerades, ingen standardteckenuppsättning/sortering angavs uttryckligen, då skulle databasens standardteckenuppsättning och sortering användas för tabellens standard.

Kommandona som du citerar i din fråga ändrar bara sådana standardteckenuppsättningar/kollationer för databasen respektive tabellen. Med andra ord kommer de bara att påverka tabeller och kolumner som skapas därefter – de kommer inte påverka befintliga kolumner (eller data).

För att uppdatera befintliga data bör du först läsa Ändra teckenuppsättningen avsnittet på manualsidan på ALTER TABLE :

För att bara ändra standard teckenuppsättning för en tabell, använd denna sats:

ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;

Ordet DEFAULT är valfritt. Standardteckenuppsättningen är den teckenuppsättning som används om du inte anger teckenuppsättningen för kolumner som du lägger till i en tabell senare (till exempel med ALTER TABLE ... ADD column ).

När foreign_key_checks systemvariabeln är aktiverad, vilket är standardinställningen, teckenuppsättningskonvertering är inte tillåten i tabeller som innehåller en teckensträngskolumn som används i en främmande nyckelrestriktion. Lösningen är att inaktivera foreign_key_checks innan du utför teckenuppsättningskonverteringen. Du måste utföra konverteringen på båda tabellerna som är involverade i den främmande nyckelbegränsningen innan du återaktiverar foreign_key_checks . Om du återaktiverar foreign_key_checks efter att endast konverterat en av tabellerna, en ON DELETE CASCADE eller ON UPDATE CASCADE operation kan korrumpera data i referenstabellen på grund av implicit konvertering som sker under dessa operationer (fel #45290, fel #74816).




  1. Utföra revision av dataändringar med hjälp av tidstabell

  2. Hur man får information om kompileringsfel i Oracle/TOAD

  3. Hur man ökar Max anslutningar i MySQL

  4. ANVÄNDA if-satsen fungerar inte som den ska