Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Perubahan pengkodean karakter MySQL. Apakah integritas data dipertahankan?

Setiap (tipe string karakter) kolom memiliki sendiri kumpulan karakter dan metadata susunan.

Jika, saat kolom tipe data 's ditentukan (yaitu ketika terakhir kali dibuat atau diubah), tidak ada set karakter/penyusunan yang diberikan secara eksplisit, maka set karakter dan susunan default tabel akan digunakan untuk kolom.

Jika, saat tabel ditentukan, tidak ada kumpulan karakter/kolasi default yang diberikan secara eksplisit, maka kumpulan karakter default dan koleksi database akan digunakan untuk default tabel.

Perintah yang Anda kutip dalam pertanyaan Anda hanya mengubah set/kolasi karakter default untuk database dan tabel masing-masing. Dengan kata lain, mereka hanya akan memengaruhi tabel dan kolom yang dibuat setelahnya—mereka tidak mempengaruhi kolom (atau data) yang ada.

Untuk memperbarui data yang ada, Anda harus terlebih dahulu membaca Mengubah Kumpulan Karakter bagian halaman manual pada ALTER TABLE :

Untuk mengubah hanya default set karakter untuk tabel, gunakan pernyataan ini:

ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;

Kata DEFAULT adalah opsional. Kumpulan karakter default adalah kumpulan karakter yang digunakan jika Anda tidak menentukan kumpulan karakter untuk kolom yang Anda tambahkan ke tabel nanti (misalnya, dengan ALTER TABLE ... ADD column ).

Saat foreign_key_checks variabel sistem diaktifkan, yang merupakan pengaturan default, konversi kumpulan karakter tidak diizinkan pada tabel yang menyertakan kolom string karakter yang digunakan dalam batasan kunci asing. Solusinya adalah menonaktifkan foreign_key_checks sebelum melakukan konversi set karakter. Anda harus melakukan konversi pada kedua tabel yang terlibat dalam batasan kunci asing sebelum mengaktifkan kembali foreign_key_checks . Jika Anda mengaktifkan kembali foreign_key_checks setelah mengonversi hanya satu tabel, ON DELETE CASCADE atau ON UPDATE CASCADE operasi dapat merusak data dalam tabel referensi karena konversi implisit yang terjadi selama operasi ini (Bug #45290, Bug #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. PHP Foreach pada kumpulan Hasil MySQLi

  2. Cara Mendapatkan id Baris di mysql

  3. mysql_connect():Tidak ada file atau direktori seperti itu

  4. Campuran ilegal dari susunan (utf8mb4_unicode_ci,IMPLICIT) dan (utf8mb4_general_ci,IMPLICIT) untuk operasi '='

  5. MySQL - Penghitung dalam grup