Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zmiana kodowania znaków MySQL. Czy zachowana jest integralność danych?

Co (ciąg znaków) kolumna ma swój własny zestaw znaków i metadane sortowania.

Jeśli, kiedy kolumna typ danych został określony (tj. kiedy został ostatnio utworzony lub zmieniony), nie podano jawnie zestawu znaków/porównania, a następnie dla kolumny zostanie użyty domyślny zestaw znaków i porównanie.

Jeśli, kiedy stół został określony, nie podano jawnie domyślnego zestawu znaków/porównania, wtedy domyślny zestaw znaków i sortowanie bazy danych zostaną użyte jako wartości domyślne tabeli.

Polecenia, które cytujesz w swoim pytaniu, zmieniają jedynie domyślne zestawy znaków/porównania odpowiednio dla bazy danych i tabeli. Innymi słowy, wpłyną tylko na tabele i kolumny, które zostaną później utworzone — nie wpływają na istniejące kolumny (lub dane).

Aby zaktualizować istniejące dane, należy najpierw przeczytać Zmiana zestawu znaków sekcja strony podręcznika w ALTER TABLE :

Aby zmienić tylko domyślne zestaw znaków dla tabeli, użyj tej instrukcji:

ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;

Słowo DEFAULT jest opcjonalne. Domyślny zestaw znaków to zestaw znaków, który jest używany, jeśli nie określisz zestawu znaków dla kolumn dodawanych później do tabeli (na przykład za pomocą ALTER TABLE ... ADD column ).

Gdy foreign_key_checks zmienna systemowa jest włączona, co jest ustawieniem domyślnym, konwersja zestawu znaków nie jest dozwolona w tabelach zawierających kolumnę ciągu znaków używaną w ograniczeniu klucza obcego. Rozwiązaniem jest wyłączenie foreign_key_checks przed wykonaniem konwersji zestawu znaków. Musisz wykonać konwersję na obu tabelach objętych ograniczeniem klucza obcego przed ponownym włączeniem foreign_key_checks . Jeśli ponownie włączysz foreign_key_checks po konwersji tylko jednej z tabel, ON DELETE CASCADE lub ON UPDATE CASCADE operacja może uszkodzić dane w tabeli referencyjnej z powodu niejawnej konwersji, która zachodzi podczas tych operacji (błąd nr 45290, błąd nr 74816).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać Spring Boot z bazą danych MySQL i JPA?

  2. Wywołaj funkcje zagnieżdżone/wewnętrzne mysql w querydsl

  3. Node.js zwraca wynik z zapytania MySQL

  4. Jak utworzyć obiekt JSON w MySql z wartością logiczną?

  5. Czy VARCHAR(20000) jest prawidłowy w MySQL?