sql >> Database >  >> RDS >> Mysql

MySQL-tekencodering gewijzigd. Wordt de gegevensintegriteit behouden?

Elke (tekenreekstype) kolom heeft zijn eigen tekenset en sortering metadata.

Als, wanneer de kolom 's gegevenstype is opgegeven (d.w.z. toen het voor het laatst werd gemaakt of gewijzigd), werd er geen expliciete tekenset/sortering opgegeven, dan zouden de standaardtekenset en sortering van de tabel worden gebruikt voor de kolom.

Als, wanneer de tafel is opgegeven, is er geen standaard tekenset/sortering expliciet opgegeven, dan zouden de standaard tekenset en sortering van de database worden gebruikt voor de standaard van de tabel.

De commando's die u in uw vraag citeert, veranderen alleen dergelijke standaardtekensets/sorteringen voor respectievelijk de database en de tabel. Met andere woorden, ze zijn alleen van invloed op tabellen en kolommen die daarna zijn gemaakt - ze zullen niet invloed hebben op bestaande kolommen (of gegevens).

Om bestaande gegevens bij te werken, moet u eerst de De tekenset wijzigen sectie van de handleiding op ALTER TABLE :

Alleen de standaard wijzigen tekenset voor een tabel, gebruik deze instructie:

ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;

Het woord DEFAULT is optioneel. De standaardtekenset is de tekenset die wordt gebruikt als u de tekenset niet opgeeft voor kolommen die u later aan een tabel toevoegt (bijvoorbeeld met ALTER TABLE ... ADD column ).

Wanneer de foreign_key_checks systeemvariabele is ingeschakeld, wat de standaardinstelling is, is tekensetconversie niet toegestaan ​​in tabellen die een tekenreekskolom bevatten die wordt gebruikt in een externe sleutelbeperking. De oplossing is om foreign_key_checks uit te schakelen voordat u de tekensetconversie uitvoert. U moet de conversie uitvoeren op beide tabellen die betrokken zijn bij de externe sleutelbeperking voordat u foreign_key_checks . Als u foreign_key_checks opnieuw inschakelt na het converteren van slechts één van de tabellen, een ON DELETE CASCADE of ON UPDATE CASCADE bewerking kan gegevens in de referentietabel beschadigen als gevolg van impliciete conversie die optreedt tijdens deze bewerkingen (bug #45290, bug #74816).




  1. postgresql lijst en bestel tabellen op grootte

  2. Drop vs Truncate in SQL

  3. probleem ORA-00001:unieke beperking geschonden komt in INSERT/UPDATE

  4. bestellen op newid() - hoe werkt het?