Theo mặc định, cơ sở dữ liệu MySQL có bộ và đối chiếu ký tự Latin1. Tuy nhiên, đôi khi bạn có thể cần lưu trữ các ký tự UTF8 trong cơ sở dữ liệu MySQL. Ở đây, cách thay đổi bộ ký tự từ Latin1 sang UTF8.
Cách chuyển đổi cơ sở dữ liệu MySQL từ Latin1 sang UTF8
Dưới đây là các bước để thay đổi ký tự được đặt từ Latin1 sang UTF cho cơ sở dữ liệu MySQL.
1. Xác định bộ ký tự hiện tại
Đăng nhập vào công cụ dòng lệnh MySQL. Bạn sẽ thấy một dấu nhắc mật khẩu. Nhập mật khẩu của bạn để đăng nhập vào cơ sở dữ liệu MySQL.
$ sudo mysql -uroot -p
Chạy lệnh sau để xác định bộ ký tự hiện tại của cơ sở dữ liệu của bạn. Thay thế cơ sở dữ liệu_name bên dưới bằng tên cơ sở dữ liệu của bạn
mysql> SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "database_name"; +----------------------------+ | default_character_set_name | +----------------------------+ | latin1 | +----------------------------+
Nếu bạn muốn xác định bộ ký tự cho một bảng cơ sở dữ liệu cụ thể, hãy chạy lệnh sau. Thay thế cơ sở dữ liệu_name và Table_Name bằng cơ sở dữ liệu và tên bảng của bạn tương ứng.
mysql> SELECT CCSA.character_set_name FROM information_schema.TABLES
T, information_schema.COLLATION_CHARACTER_SET_APPLICABILITY
CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = "database_name" AND T.table_name = "table_name";
Chạy lệnh sau để thay đổi bộ ký tự của cơ sở dữ liệu MySQL từ Latin1 sang UTF8. Thay thế cơ sở dữ liệu_name bằng tên cơ sở dữ liệu của bạn
Cho mysql> 5.5
mysql> ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Cho mysql
mysql>ALTER DATABASE database_name CHARACTER
SET utf8 COLLATE utf8_unicode_ci;
Tiền thưởng Đọc: Cách xếp hạng phân vùng trong MySQL
Tương tự, ở đây, Lệnh để thay đổi bộ ký tự của bảng MySQL từ Latin1 sang UTF8. Thay thế table_name bằng tên bảng cơ sở dữ liệu của bạn.
Cho mysql> 5.5
mysql> ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Cho mysql
mysql>ALTER TABLE table_name CONVERT TO CHARACTER
SET utf8 COLLATE utf8_unicode_ci;
Tiền thưởng Đọc: Cách xếp hạng phân vùng trong MySQL
Tương tự, ở đây, Lệnh để thay đổi bộ ký tự của bảng MySQL từ Latin1 sang UTF8. Thay thế table_name bằng tên bảng cơ sở dữ liệu của bạn.
- Hy vọng, hướng dẫn trên sẽ giúp bạn thay đổi ký tự cơ sở dữ liệu được đặt thành UTF8MB4 [UTF-8].
Chuyển đổi từ UTF8 sang Latin1
Đăng bởi: Patrick Rey Ngày: 19 tháng 10 năm 2006 04:55 PMPatrick REY
Date: October 19, 2006 04:55PM
Tôi có hệ thống cục bộ với MySQL 4.1-9max chạy trên WinXP. Nó có một cơ sở dữ liệu với các bảng sử dụng bộ ký tự UTF8. Tôi muốn chuyển nó trên một máy chủ web từ xa, chạy MySQL 3.23, sử dụng Charset Latin1.
It has a database with tables using utf8 character set.
I want to transfer it on a remote web server, which runs mysql 3.23, using latin1 charset.
Làm thế nào để tôi làm điều này ? - Tôi đã cố gắng xuất [sử dụng phpmyadmin 2.6.1], sử dụng chế độ tương thích [MySQL323]. Tôi có thể tải tệp SQL trở lại ... nhưng các điểm nhấn của Pháp [é, è, à, và nhiều hơn nữa] không được nhập khẩu tốt. 'Périodique' hóa ra 'PÃ © Riodique' ...
- I tried to export [using PHPMyAdmin 2.6.1], using compatibility mode [mysql323]. I can load the sql file back... but the french accents [é, è, à, and more] are not well imported. 'Périodique' turns out to 'Périodique' ...
- Tôi đã cố gắng sửa đổi các biến thông qua lệnh latin1 tên đã đặt [trong cửa sổ phpmyadmin SQL] ... nó hoạt động ổn ... nhưng các biến không thay đổi! Dưới đây là những gì tôi có trong hệ thống cục bộ của mình: bộ ký tự / toàn cầu đặt máy khách UTF8 Latin1 Set Set Kết nối UTF8 LATIN1 SET SET DATAB Cơ sở dữ liệu Latin1 Latin1 Đặt kết quả UTF8 LATIN1 SET SET SET LATIN1 LATIN1 SET
Here is what I have in my local system :
Session / Global
character set client utf8 latin1
character set connection utf8 latin1
character set database latin1 latin1
character set results utf8 latin1
character set server latin1 latin1
character set system utf8 utf8
---- Tôi có thể thay đổi các biến đó và sử dụng phpmyadmin không? Làm sao ?? ---- Tôi có nên sử dụng một công cụ khác [mysqldump, ...] không?
---- Should I use another tool [mysqldump, ...] ?
Cảm ơn sự hỗ trợ của bạn !
Môn học
Được viết bởi
Đăng
Chuyển đổi từ UTF8 sang Latin1
Đăng bởi: Patrick Rey Ngày: 19 tháng 10 năm 2006 04:55 PM
Tôi có hệ thống cục bộ với MySQL 4.1-9max chạy trên WinXP. Nó có một cơ sở dữ liệu với các bảng sử dụng bộ ký tự UTF8. Tôi muốn chuyển nó trên một máy chủ web từ xa, chạy MySQL 3.23, sử dụng Charset Latin1.
Làm thế nào để tôi làm điều này ? - Tôi đã cố gắng xuất [sử dụng phpmyadmin 2.6.1], sử dụng chế độ tương thích [MySQL323]. Tôi có thể tải tệp SQL trở lại ... nhưng các điểm nhấn của Pháp [é, è, à, và nhiều hơn nữa] không được nhập khẩu tốt. 'Périodique' hóa ra 'PÃ © Riodique' ...
Từ UTF8 đến UTF8MB4:
1.Show tất cả các ký tự mặc định cơ sở dữ liệu:
SELECT SCHEMA_NAME 'YOUR_DATABASE_NAME',
default_character_set_name 'charset',
DEFAULT_COLLATION_NAME 'collation'
FROM information_schema.SCHEMATA;
2.Show Tất cả trạng thái bảng [bộ ký tự], tập trung vào cột 'đối chiếu':
use YOUR_DATABASE_NAME;
SHOW TABLE STATUS ;
3. Chuyển đổi SQL: Chuyển đổi cơ sở dữ liệu & tất cả các bảng thành UTF8MB4, UTF8MB4_UNICODE_CI
USE information_schema;
SELECT CONCAT["ALTER DATABASE `",table_schema,"` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;"] AS _sql
FROM `TABLES` WHERE table_schema LIKE "YOUR_DATABASE_NAME" AND TABLE_TYPE='BASE TABLE' GROUP BY table_schema UNION
SELECT CONCAT["ALTER TABLE `",table_schema,"`.`",table_name,"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"] AS _sql
FROM `TABLES` WHERE table_schema LIKE "YOUR_DATABASE_NAME" AND TABLE_TYPE='BASE TABLE' GROUP BY table_schema, TABLE_NAME
/*include all columns, commonly don't need this.*/
/*
UNION
SELECT CONCAT["ALTER TABLE `",`COLUMNS`.table_schema,"`.`",`COLUMNS`.table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type,"[",character_maximum_length,"] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci",IF[is_nullable="YES"," NULL"," NOT NULL"],";"] AS _sql
FROM `COLUMNS` INNER JOIN `TABLES` ON `TABLES`.table_name = `COLUMNS`.table_name WHERE `COLUMNS`.table_schema like "YOUR_DATABASE_NAME" and data_type in ['varchar','char'] AND TABLE_TYPE='BASE TABLE' UNION
SELECT CONCAT["ALTER TABLE `",`COLUMNS`.table_schema,"`.`",`COLUMNS`.table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type," CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci",IF[is_nullable="YES"," NULL"," NOT NULL"],";"] AS _sql
FROM `COLUMNS` INNER JOIN `TABLES` ON `TABLES`.table_name = `COLUMNS`.table_name WHERE `COLUMNS`.table_schema like "YOUR_DATABASE_NAME" and data_type in ['text','tinytext','mediumtext','longtext'] AND TABLE_TYPE='BASE TABLE';
*/
4.Run SQL được tạo ra.
5. Đổi cơ sở dữ liệu của bạn.
6.check:
mysql> SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "database_name"; +----------------------------+ | default_character_set_name | +----------------------------+ | latin1 | +----------------------------+0