Tôi đang chuyển đổi một trang web từ ISO sang UTF-8, vì vậy tôi cũng cần phải chuyển đổi cơ sở dữ liệu MySQL.Chuyển đổi cơ sở dữ liệu MySQL từ latin sang UTF-8
Trên Internet, tôi đọc các giải pháp khác nhau, tôi không biết nên chọn giải pháp nào.
Tôi có thực sự cần phải chuyển đổi các cột VARCHAR của tôi để nhị phân, sau đó sang UTF-8 như thế:
ALTER TABLE t MODIFY col BINARY(150);
ALTER TABLE t MODIFY col CHAR(150) CHARACTER SET utf8;
Phải mất một thời gian dài để làm điều đó cho mỗi cột, mỗi bảng, mỗi cơ sở dữ liệu .
Tôi có 10 cơ sở dữ liệu, với 20 bảng mỗi bảng, với khoảng 2 - 3 cột VARCHAR (2 truy vấn mỗi cột), điều này cho tôi khoảng 1000 truy vấn để viết! Làm thế nào để làm nó?
Resolved: tôi gửi mã mà tôi đã sử dụng:
PASSWORD=""
db=$1
mysqldump --password=$PASSWORD --set-charset --skip-set-charset --add-drop-table --databases "$db" > /home/dev/backup/bdd.sql
QUERY="ALTER DATABASE \`$db\` DEFAULT CHARACTER SET utf8;"
mysql --password=$PASSWORD --database "$db" -e "$QUERY"
mysql --password=$PASSWORD --default-character-set=utf8 < /home/dev/backup/bdd.sql
Xem câu trả lời dưới đây để biết thêm thông tin.
Không phải '--set-charset' và' --skip-set-charset' cờ cạnh tranh trực tiếp? Tài liệu cho biết chúng ảnh hưởng đến việc sử dụng 'SET NAMES', nhưng không đặt tham số' DEFAULT CHARSET = X' là kết quả đầu ra thông qua 'mysqldump' trên mỗi bảng. (mysql 5.5) – fideloper