Latest Post

Tăng thứ hạng và truy cập tự nhiên với 10 phương pháp SEO hay nhất Kiếm Tiền Online (mmo): Khái Niệm và Các Hình Thức Phổ Biến

Vấn đề ở đây là chúng ta đã vô tình sử dụng một bảng Cơ sở dữ liệu (CSDL) với một bộ Collation và Character Set mặc định, hoặc một bộ Collation và Character Set khác với utf8. Một ví dụ cụ thể có thể là khi chúng ta tạo một trang web WordPress trong một môi trường Docker và sử dụng MySQL. Trong trường hợp này, giá trị mặc định của Collation và Character Set thường là “latin1”.

Tuy nhiên nếu bạn đang tạo 1 website sử dụng tiếng Việt thì bạn nên chuyển về định dạng là

  • Character Set: utf8mb4
  • Collation: utf8mb4_unicode_ci

Cách chuyển Collation & Character Set 1 bảng CSDL

Chúng ta sử dụng câu lệnh SQL ALTER của MySQL & MariaDB

ALTER TABLE wp_users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Cách chuyển Collation & Character Set cho tất cả các bảng CSDL

Nếu bạn có một cơ sở dữ liệu với nhiều bảng và muốn thực hiện thay đổi (ALTER) cho từng bảng, thực hiện từng câu lệnh ALTER một có thể tốn rất nhiều thời gian. Trong trường hợp này, bạn có thể thực hiện theo cách sau:

Sử dụng câu lệnh SQL dưới đây để tạo một loạt câu lệnh ALTER TABLE

SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = '<schema>' AND TABLE_TYPE != 'VIEW';

Với <schema> là tên CSDL của chúng ta.

Câu lệnh trên sẽ tạo ra tất cả các câu lệnh SQL mà chúng ta mong muốn:

ALTER TABLE wp_commentmeta CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_links CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_options CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_postmeta CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_term_relationships CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_term_taxonomy CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_termmeta CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_terms CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_usermeta CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Cuối cùng bạn chỉ việc copy và cho chạy tất cả các câu lệnh trên cùng 1 lượt là xong.

Kết quả:

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *