13.7.4.2 & nbsp; Đặt câu lệnh SET ký tự
SET {CHARACTER SET | CHARSET}
{'charset_name' | DEFAULT}
Tuyên bố này ánh xạ tất cả các chuỗi được gửi giữa máy chủ và máy khách hiện tại với ánh xạ đã cho. SET CHARACTER
SET
Đặt ba biến hệ thống phiên: character_set_client
và character_set_results
được đặt thành bộ ký tự đã cho và character_set_connection
thành giá trị của character_set_database
. Xem Phần & NBSP; 10.4, Bộ ký tự kết nối và các bộ cộng đồng.
[client]
character-sets-dir=/usr/local/mysql/share/mysql/charsets
[client]
character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
0 có thể được trích dẫn hoặc không được trích dẫn.Ánh xạ bộ ký tự mặc định có thể được khôi phục bằng cách sử dụng giá trị
[client]
character-sets-dir=/usr/local/mysql/share/mysql/charsets
[client]
character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
1. Mặc định phụ thuộc vào cấu hình máy chủ. Một số bộ ký tự không thể được sử dụng làm bộ ký tự máy khách. Cố gắng sử dụng chúng với SET CHARACTER
SET
tạo ra lỗi. Xem các bộ ký tự máy khách không thể chấp nhận được.
Máy chủ MySQL có bộ và đối chiếu ký tự mặc định được biên dịch. Để thay đổi các mặc định này, hãy sử dụng các tùy chọn
[client]
character-sets-dir=/usr/local/mysql/share/mysql/charsets
[client]
character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
3 và [client]
character-sets-dir=/usr/local/mysql/share/mysql/charsets
[client]
character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
4 khi bạn khởi động máy chủ. Xem Phần & NBSP; 5.1.7, Tùy chọn lệnh máy chủ của Cameron. Việc đối chiếu phải là một đối chiếu pháp lý cho bộ ký tự mặc định. Để xác định các đối chiếu nào có sẵn cho mỗi bộ ký tự, hãy sử dụng câu lệnh [client]
character-sets-dir=/usr/local/mysql/share/mysql/charsets
[client]
character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
5 hoặc truy vấn bảng [client]
character-sets-dir=/usr/local/mysql/share/mysql/charsets
[client]
character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
6 [client]
character-sets-dir=/usr/local/mysql/share/mysql/charsets
[client]
character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
7.Nếu bạn cố gắng sử dụng một bộ ký tự không được biên dịch vào nhị phân của bạn, bạn có thể gặp phải các vấn đề sau:
Nếu chương trình của bạn sử dụng đường dẫn không chính xác để xác định vị trí bộ ký tự được lưu trữ [thường là thư mục
8 hoặc[client] character-sets-dir=/usr/local/mysql/share/mysql/charsets [client] character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
9 trong thư mục cài đặt MySQL], điều này có thể được sửa bằng cách sử dụng tùy chọn[client] character-sets-dir=/usr/local/mysql/share/mysql/charsets [client] character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
0 khi bạn chạy chương trình. Ví dụ: để chỉ định một thư mục sẽ được sử dụng bởi các chương trình máy khách MySQL, hãy liệt kê nó trong nhómCharacter set 'charset_name' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
1 của tệp tùy chọn của bạn. Các ví dụ được đưa ra ở đây cho thấy cài đặt có thể trông như thế nào đối với Unix hoặc Windows, tương ứng:Character set 'charset_name' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
[client] character-sets-dir=/usr/local/mysql/share/mysql/charsets [client] character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
Nếu bộ ký tự là một bộ ký tự phức tạp không thể được tải động, bạn phải biên dịch lại chương trình với sự hỗ trợ cho bộ ký tự.
Đối với các bộ ký tự unicode, bạn có thể xác định các đối chiếu mà không cần biên dịch lại bằng cách sử dụng ký hiệu LDML. Xem Phần & NBSP; 10.14.4, Thêm một đối chiếu UCA vào một ký tự Unicode.
Nếu bộ ký tự là bộ ký tự động, nhưng bạn không có tệp cấu hình cho nó, bạn nên cài đặt tệp cấu hình cho bộ ký tự từ phân phối MySQL mới.
Nếu tệp chỉ mục đặt ký tự của bạn [
2] không chứa tên cho bộ ký tự, chương trình của bạn sẽ hiển thị thông báo lỗi:Character set 'charset_name' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
Character set 'charset_name' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
Để giải quyết vấn đề này, bạn nên lấy một tệp chỉ mục mới hoặc thêm tên của bất kỳ bộ ký tự bị thiếu nào vào tệp hiện tại.
Bạn có thể buộc các chương trình khách hàng sử dụng bộ ký tự cụ thể như sau:
[client]
default-character-set=charset_name
Điều này thường không cần thiết. Tuy nhiên, khi
Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
3 khác với Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
4 hoặc character_set_client
và bạn nhập các ký tự theo cách thủ công [dưới dạng định danh đối tượng cơ sở dữ liệu, giá trị cột hoặc cả hai], chúng có thể được hiển thị không chính xác trong đầu ra từ máy khách hoặc đầu ra có thể được định dạng không chính xác. Trong những trường hợp như vậy, bắt đầu ứng dụng khách MySQL với ____ ____ 26, nghĩa là, đặt ký tự máy khách được đặt để phù hợp với bộ ký tự hệ thống, sẽ khắc phục sự cố. MySQL bao gồm hỗ trợ bộ ký tự cho phép bạn lưu trữ dữ liệu bằng cách sử dụng nhiều bộ ký tự và thực hiện so sánh theo một loạt các đối chiếu. Bộ và đối chiếu ký tự máy chủ MySQL mặc định là
Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
7 và Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
8, nhưng bạn có thể chỉ định các bộ ký tự tại các cấp độ máy chủ, cơ sở dữ liệu, bảng, cột và chuỗi.Chương này thảo luận về các chủ đề sau:
Bộ nhân vật và đối chiếu là gì?
Hệ thống mặc định đa cấp cho gán bộ ký tự.
Cú pháp để chỉ định bộ ký tự và đối chiếu.
Các chức năng và hoạt động bị ảnh hưởng.
Hỗ trợ Unicode.
Các bộ ký tự và các bộ cộng đồng có sẵn, với các ghi chú.
Chọn ngôn ngữ cho thông báo lỗi.
Chọn địa điểm cho tên ngày và tháng.
Các vấn đề về bộ ký tự không chỉ ảnh hưởng đến việc lưu trữ dữ liệu, mà còn giao tiếp giữa các chương trình khách hàng và máy chủ MySQL. Nếu bạn muốn chương trình máy khách giao tiếp với máy chủ bằng cách sử dụng một ký tự khác với mặc định, bạn sẽ cần chỉ ra chương trình nào. Ví dụ: để sử dụng bộ ký tự Unicode
Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
7, hãy đưa ra câu lệnh này sau khi kết nối với máy chủ:SET NAMES 'utf8mb4';
Để biết thêm thông tin về việc định cấu hình các bộ ký tự để sử dụng ứng dụng và các vấn đề liên quan đến ký tự trong giao tiếp máy khách/máy chủ, xem Phần & NBSP; 10.5, Cấu hình ký tự ứng dụng Set và Collation, và Phần & NBSP; 10.4, Bộ ký tự kết nối và đối chiếu.