Cách chuyển Collation của toàn bộ bảng về utf8_unicode trên MySQL và MariaDB


Bài toán đặt ra là vô tình chúng ta đã tạo và sử dụng bảng CSDL với chuẩn CollationCharacter Set mặc định hoặc khác utf8. Như trường hợp mình có tạo WordPress trên docker sử dụng MySQL thì nó mặc định default 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

Với 1 database có rất nhiều bảng, chạy từng câu lệnh ALTER với mỗi bảng sẽ mất rất nhiều thời gian thì chúng ta có cách như sau:

Chạy câu lệnh SQL sau để tạo ra 1 loạt các 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ả:

Nguồn: vinasupport.com

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

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 *

account_circle
web