Tuy nhiên cách làm này khá vất vả nếu bạn có đến hàng trăm hàng ngàn table cần đổi thì có lẽ mất cả ngày. Đoạn code dưới đây mình sưu tầm được và đã test. Sẽ giúp cho bạn thay đổi toàn bộ collation của dữ liệu sang bảng mã mình muốn. Chằng hạn từ latin1_swedish_ci sang utf8-general-ci. Giải quyết vấn đề lỗi font khi cập nhật nội dung mới.
1. Lưu đoạn code sau thành file php
<?php
$db = mysql_connect('localhost','mysql_user','mysql_password');
if(!$db) echo "Cannot connect to the database – incorrect details";
mysql_select_db('mysql_database'); $result=mysql_query('show tables');
while($tables = mysql_fetch_array($result)) {
foreach ($tables as $key => $value) {
mysql_query("ALTER TABLE $value COLLATE utf8_general_ci");
}}
echo "The collation of your database has been successfully changed!";
?>
2. Đổi thông tin cho phù hợp với host và database của bạn:
+ localhost: Máy chủ của bạn
+ mysql_user: Tên user để đăng nhập MySQL
+ mysql_password: Mật khẩu đăng nhập MySQL
+ mysql_database: Tên của cơ sở dữ liệu cần đổi collation
+ utf8_general_ci: bảng mã cần chuyển.
3. Up file này lên host và chạy nó:
Chẳng hạn bạn đặt tên file là change.php và up lên thư mục gốc thì chỉ cần chạy: tenmien.com/change.php. Khi có thông báo: The collation of your database has been successfully changed! là được. Còn Cannot connect to the database – incorrect details thì kiểm tra lại thông tin bạn cung cấp trong file đã chính xác chưa nhé.
4. Xóa file này để hạn chế nguy cơ về bảo mật:
File này chứa thông tin mật khẩu và user kết nối đến database của bạn. Do đó sau khi chạy xong thì nên xóa nó đi, tránh nguy cơ dữ liệu bị rơi vào tay kẻ xấu
Chúc các bạn thành công
_______________________
Convert từ Latin1 sang Uft8 trong PhpMyadmin
Khi cài website WordPress hay các mã nguồn khác, nhiều Hosting server chẳng hiểu sao để mặc định database Font là Latin 1 chữ không phải UFT 8 Unicode khiến website của bạn bị lỗi phông chữ nặng. Sau khi cài xong, ta phải vào PHP Myadmin để change lại Latin1 thành Ut8-General-ci rất bất tiện và mất công vì cữ phải dò từng bảng 1, từng row 1 mà change. Sau đây là cách sử dụng 1 chuỗi SQL lệnh để change hàng loạt từ latin 1 sang UTF8 chỉ bằng 1 nút bấm
Code:
ALTER TABLE wp_posts CONVERT TO CHARACTER SET utf8;
ALTER TABLE wp_terms CONVERT TO CHARACTER SET utf8;
ALTER TABLE wp_term_relationships CONVERT TO CHARACTER SET utf8;
ALTER TABLE wp_options CONVERT TO CHARACTER SET utf8;
ALTER TABLE wp_usermeta CONVERT TO CHARACTER SET utf8;
------
------
Trong một số trường hợp trang web của bạn bị lỗi hiển thị tiếng Việt, lỗi này có thể do Collation của Database không phải là utf8-general-ci (chẳng hạn như latin1_swedish_ci). Trong trường hợp này bạn cần phải thay đổi lại Collation của Database thành utf8-general-ci, sau đây là cách thực hiện:
Cách thay đổi Collation của Dataase:
1/ Truy cập vào phpMyAdmin trên host (hoặc localhost) và chọn Database nào muốn sửa
2/ Chọn Tab tên là Operations
3/ Nhìn xuống phía dưới cùng bạn sẽ thấy mục Collation, hãy chọn utf8-general-ci
4/ Nhấn Go để chuyển.
Thay đổi này chỉ có hiệu lực đồi với các dữ liệu được tạo mới sau thời điểm này, các dữ liệu cũ vẫn cỏn giữ nguyên Collation như cũ, bạn phải thực hiện việc chuyển đổi Collation cho từng bảng dữ liệu cũ.
Cách thay đổi Collation cho các bảng dữ liệu:
1/ Truy cập vào phpMyAdmin trên host (hoặc localhost) và chọn Database nào muốn sửa
2/ Trong khung bên trái, nhấn vào một bảng dữ liệu đầu tiên.
3/ Chuyển sang khung bên phải, chọn Tab tên là Structure (nếu chưa được chọn)
4/ Bạn hãy dò trong cột Collation và đánh dấu chọn mục nào có Collation muốn chuyển đổi.
5/ Nhấn vào lệnh Change (có hình cây bút chì) trong phần With selected nằm ngay bên dưới.
6/ Thay đổi thành utf8-general-ci của các mục trong cột Collation.
7/ Nhấn Save để lưu các thay đổi.
Tiếp tục thực hiện từ bước 2 đến bước 7 cho các bảng dữ liệu còn lại.
Nhớ sao lưu Database trước khi thực hiện để nếu có lỗi gì thì có thể khôi phục lại được.
Cách thay đổi Collation của Dataase:
1/ Truy cập vào phpMyAdmin trên host (hoặc localhost) và chọn Database nào muốn sửa
2/ Chọn Tab tên là Operations
3/ Nhìn xuống phía dưới cùng bạn sẽ thấy mục Collation, hãy chọn utf8-general-ci
4/ Nhấn Go để chuyển.
Thay đổi này chỉ có hiệu lực đồi với các dữ liệu được tạo mới sau thời điểm này, các dữ liệu cũ vẫn cỏn giữ nguyên Collation như cũ, bạn phải thực hiện việc chuyển đổi Collation cho từng bảng dữ liệu cũ.
Cách thay đổi Collation cho các bảng dữ liệu:
1/ Truy cập vào phpMyAdmin trên host (hoặc localhost) và chọn Database nào muốn sửa
2/ Trong khung bên trái, nhấn vào một bảng dữ liệu đầu tiên.
3/ Chuyển sang khung bên phải, chọn Tab tên là Structure (nếu chưa được chọn)
4/ Bạn hãy dò trong cột Collation và đánh dấu chọn mục nào có Collation muốn chuyển đổi.
5/ Nhấn vào lệnh Change (có hình cây bút chì) trong phần With selected nằm ngay bên dưới.
6/ Thay đổi thành utf8-general-ci của các mục trong cột Collation.
7/ Nhấn Save để lưu các thay đổi.
Tiếp tục thực hiện từ bước 2 đến bước 7 cho các bảng dữ liệu còn lại.
Nhớ sao lưu Database trước khi thực hiện để nếu có lỗi gì thì có thể khôi phục lại được.
0 nhận xét: