Hướng dẫn mysql connection string charset utf-8 - bộ ký tự chuỗi kết nối mysql utf-8
Trình kết nối MYSQL/chuỗi kết nối NET này có thể được sử dụng cho các kết nối với MySQL. Sử dụng cái này để chỉ định ký tự nào được đặt để sử dụng để mã hóa các truy vấn được gửi đến máy chủ. Ghi chú! Sử dụng giá trị chữ thường UTF8 và không phải trường hợp trên UTF8 vì điều này sẽ thất bại. Lưu ý rằng các kết quả vẫn được trả về trong bộ ký tự của dữ liệu được trả về. Một kết nối của người Viking là những gì một chương trình khách hàng tạo ra khi kết nối với máy chủ, để bắt đầu một phiên trong đó nó tương tác với máy chủ. Máy khách gửi các câu lệnh SQL, chẳng hạn như truy vấn, qua kết nối phiên. Máy chủ gửi phản hồi, chẳng hạn như bộ kết quả hoặc thông báo lỗi, qua kết nối trở lại máy khách.“connection” is what a client program makes when it connects to the server, to begin a session within which it interacts with the server. The client sends SQL statements, such as queries, over the session connection. The server sends responses, such as result sets or error messages, over the connection back to the client.
Bộ ký tự kết nối và các biến hệ thống đối chiếuMột số biến hệ thống bộ ký tự và đối chiếu liên quan đến tương tác của máy khách với máy chủ. Một số trong số này đã được đề cập trong các phần trước:
Các biến hệ thống ký tự và đối chiếu bổ sung có liên quan đến việc xử lý lưu lượng truy cập cho kết nối giữa máy khách và máy chủ. Mỗi khách hàng có các biến hệ thống ký tự và đối chiếu liên quan đến kết nối cụ thể theo phiên. Các giá trị biến hệ thống phiên này được khởi tạo tại thời điểm kết nối, nhưng có thể được thay đổi trong phiên. Một số câu hỏi về bộ ký tự và xử lý đối chiếu cho các kết nối khách hàng có thể được trả lời theo các biến hệ thống:
Để xem các giá trị của các biến hệ thống ký tự và hệ thống đối chiếu áp dụng cho phiên hiện tại, hãy sử dụng câu lệnh này:
Các câu lệnh đơn giản hơn sau cũng hiển thị các biến kết nối, nhưng cũng bao gồm các biến liên quan khác. Chúng có thể hữu ích để xem tất cả các biến hệ thống tập hợp và bộ đối chiếu:all character set and collation system variables:
Khách hàng có thể tinh chỉnh các cài đặt cho các biến này hoặc phụ thuộc vào mặc định (trong trường hợp đó, bạn có thể bỏ qua phần còn lại của phần này). Nếu bạn không sử dụng mặc định, bạn phải thay đổi cài đặt ký tự cho mỗi kết nối với máy chủ.for each connection to the server. Bộ nhân vật khách hàng không thể chấp nhận đượcBiến hệ thống 3 không thể được đặt thành các bộ ký tự nhất định:
Cố gắng sử dụng bất kỳ bộ ký tự nào đó làm bộ ký tự máy khách tạo ra lỗi:
Lỗi tương tự xảy ra nếu bất kỳ bộ ký tự nào được sử dụng trong các bối cảnh sau, tất cả đều dẫn đến nỗ lực đặt 3 cho bộ ký tự được đặt tên:
Cấu hình ký tự kết nối chương trình máy kháchCâu lệnh SQL cho cấu hình bộ ký tự kết nối Xử lý lỗi bộ ký tự kết nối MySQL, MySQLadmin, MySQLcheck, MySQLimport và MySQLShow khách hàng xác định ký tự mặc định được đặt để sử dụng như sau:mysql, mysqladmin, mysqlcheck, mysqlimport, and mysqlshow client programs determine the default character set to use as follows:
Với máy khách MySQL, để sử dụng một bộ ký tự khác với mặc định, bạn có thể thực hiện rõ ràng câu lệnh 5 mỗi khi bạn kết nối với máy chủ (xem Cấu hình ký tự kết nối chương trình khách hàng). Để hoàn thành kết quả tương tự dễ dàng hơn, chỉ định bộ ký tự trong tệp tùy chọn của bạn. Ví dụ: cài đặt tệp tùy chọn sau thay đổi ba biến hệ thống đặt ký tự liên quan đến kết nối được đặt thành 1 mỗi khi bạn gọi mysql:mysql client, to use a character set different from the default, you could explicitly execute a 5 statement every
time you connect to the server (see Client Program Connection Character Set Configuration). To accomplish the same result more easily, specify the character set in your option file. For example, the following option file setting changes the three connection-related character set system variables set to
1 each time you invoke mysql:
Nếu bạn đang sử dụng ứng dụng khách MySQL có bật kết nối tự động (không được khuyến nghị), nên sử dụng lệnh 0 thay vì 5. Ví dụ:mysql client with auto-reconnect enabled (which is not recommended), it is preferable to use the
0 command rather than 5. For example:
Lệnh 0 đưa ra câu lệnh 5 và cũng thay đổi bộ ký tự mặc định mà MySQL sử dụng khi kết nối lại sau khi kết nối đã giảm.mysql uses when it reconnects after the connection has dropped. Khi các chương trình máy khách cấu hình, bạn cũng phải xem xét môi trường mà họ thực hiện. Xem Phần & NBSP; 10.5, Cấu hình ký tự ứng dụng Set và Collation. Câu lệnh SQL cho cấu hình bộ ký tự kết nốiSau khi một kết nối đã được thiết lập, khách hàng có thể thay đổi các biến hệ thống tập hợp và hệ thống đối chiếu cho phiên hiện tại. Các biến này có thể được thay đổi riêng lẻ bằng cách sử dụng các câu lệnh 4, nhưng hai câu lệnh thuận tiện hơn ảnh hưởng đến các biến hệ thống tập hợp ký tự liên quan đến kết nối như một nhóm:
Ví dụ: Giả sử 0 được định nghĩa là 1. Nếu bạn không nói 5 hoặc 9, thì với 4, máy chủ sẽ gửi lại tất cả các giá trị cho 0 bằng cách sử dụng bộ ký tự mà máy khách chỉ định khi kết nối. Mặt khác, nếu bạn nói 6 hoặc 7 Trước khi phát hành câu lệnh 0, máy chủ sẽ chuyển đổi các giá trị 9 thành 00 ngay trước khi gửi kết quả. Chuyển đổi có thể bị mất cho các ký tự không có trong cả hai bộ ký tự.Xử lý lỗi bộ ký tự kết nốiCố gắng sử dụng một bộ hoặc đối chiếu ký tự kết nối không phù hợp có thể tạo ra lỗi hoặc khiến máy chủ quay trở lại bộ ký tự mặc định và đối chiếu cho một kết nối nhất định. Phần này mô tả các vấn đề có thể xảy ra khi định cấu hình bộ ký tự kết nối. Những vấn đề này có thể xảy ra khi thiết lập kết nối hoặc khi thay đổi bộ ký tự trong một kết nối đã được thiết lập.
Kết nối xử lý lỗi thời gianXử lý lỗi thời gian chạy 1Một số bộ ký tự không thể được sử dụng làm bộ ký tự máy khách; Xem các bộ ký tự máy khách không thể chấp nhận được. Nếu bạn chỉ định một bộ ký tự hợp lệ nhưng không được phép làm bộ ký tự máy khách, máy chủ sẽ trả về lỗi: 2Nếu bạn chỉ định một bộ ký tự mà máy khách không nhận ra, nó sẽ tạo ra một lỗi: 3Nếu bạn chỉ định một bộ ký tự mà máy khách nhận ra nhưng máy chủ thì không, máy chủ sẽ quay trở lại bộ ký tự và đối chiếu mặc định của nó. Giả sử rằng máy chủ được cấu hình để sử dụng 00 và 02 làm mặc định của nó và nó không nhận ra 03 là một bộ ký tự hợp lệ. Một máy khách chỉ định 04 có thể kết nối với máy chủ, nhưng bộ ký tự kết quả không phải là điều mà khách hàng muốn:Bạn có thể thấy rằng các biến hệ thống kết nối đã được đặt để phản ánh một bộ ký tự và đối chiếu là 00 và 02. Điều này xảy ra vì máy chủ không thể đáp ứng yêu cầu đặt ký tự máy khách và rơi vào mặc định của nó.Trong trường hợp này, máy khách không thể sử dụng bộ ký tự mà nó muốn vì máy chủ không hỗ trợ nó. Máy khách phải sẵn sàng sử dụng một bộ ký tự khác hoặc kết nối với một máy chủ khác hỗ trợ bộ ký tự mong muốn. 3Vấn đề tương tự xảy ra trong bối cảnh tinh tế hơn: khi máy khách nói với máy chủ sử dụng bộ ký tự mà máy chủ nhận ra, nhưng đối chiếu mặc định cho ký tự đó được đặt ở phía máy khách không được biết ở phía máy chủ. Điều này xảy ra, ví dụ, khi máy khách MySQL 8.0 muốn kết nối với máy chủ MySQL 5.7 bằng cách sử dụng 6 làm ký tự khách. Một máy khách chỉ định 08 có thể kết nối với máy chủ. Tuy nhiên, như trong ví dụ trước, máy chủ rơi trở lại bộ ký tự và đối chiếu mặc định của nó, không phải những gì máy khách yêu cầu:
Vì máy chủ 5.7 không nhận ra 12, nó không thể đáp ứng yêu cầu đặt ký tự khách và rơi vào bộ ký tự và đối chiếu ký tự mặc định của nó ( 00 và 02).Xử lý lỗi thời gian chạyMột số bộ ký tự không thể được sử dụng làm bộ ký tự máy khách; Xem các bộ ký tự máy khách không thể chấp nhận được. Nếu bạn chỉ định một bộ ký tự hợp lệ nhưng không được phép làm bộ ký tự máy khách, máy chủ sẽ trả về lỗi: Xử lý lỗi thời gian chạy 5Một số bộ ký tự không thể được sử dụng làm bộ ký tự máy khách; Xem các bộ ký tự máy khách không thể chấp nhận được. Nếu bạn chỉ định một bộ ký tự hợp lệ nhưng không được phép làm bộ ký tự máy khách, máy chủ sẽ trả về lỗi: 6Nếu bạn chỉ định một bộ ký tự mà máy khách không nhận ra, nó sẽ tạo ra một lỗi: Nếu bạn chỉ định một bộ ký tự mà máy khách nhận ra nhưng máy chủ thì không, máy chủ sẽ quay trở lại bộ ký tự và đối chiếu mặc định của nó. Giả sử rằng máy chủ được cấu hình để sử dụng 00 và 02 làm mặc định của nó và nó không nhận ra 03 là một bộ ký tự hợp lệ. Một máy khách chỉ định 04 có thể kết nối với máy chủ, nhưng bộ ký tự kết quả không phải là điều mà khách hàng muốn: 7
Làm cách nào để thay đổi mã hóa MySQL thành UTFĐể thay đổi mã hóa bộ ký tự thành UTF-8 cho chính cơ sở dữ liệu, hãy nhập lệnh sau tại dấu nhắc MySQL>. Thay thế dbname bằng tên cơ sở dữ liệu: Sao chép thay đổi cơ sở dữ liệu DBNAME SETS SET UTF8 đối chiếu UTF8_General_CI; Để thoát khỏi chương trình MySQL, hãy nhập \ Q tại lời nhắc MySQL>.Copy ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci; To exit the mysql program, type \q at the mysql> prompt.
MySQL có hỗ trợ UTF khôngMySQL hỗ trợ nhiều bộ ký tự Unicode: UTF8MB4: Mã hóa UTF-8 của bộ ký tự Unicode sử dụng một đến bốn byte trên mỗi ký tự.UTF8MB3: Mã hóa UTF-8 của ký tự Unicode sử dụng một đến ba byte trên mỗi ký tự.: utf8mb4 : A UTF-8 encoding of the Unicode character set using one to four bytes per character. utf8mb3 : A UTF-8 encoding of the Unicode character set using one to three bytes per character.
Sự khác biệt giữa UTF8MB4 và UTF là gìUTF-8 chỉ có thể lưu trữ các ký tự 1, 2 hoặc 3 byte, trong khi UTF8MB4 cũng có thể lưu trữ 4 ký tự byte.UTF-8 là một tập hợp các ký tự được đưa ra bởi UTF8MB4.. utf-8 is a subset of characters given by utf8mb4 .
Làm cách nào để thay đổi kết nối bộ ký tự trong mysql?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-collation-server-collation-server --character-set-server khi bạn khởi động máy chủ.use the --character-set-server and --collation-server options when you start the server. |