Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

c # Gặp sự cố với mysql:Mã giá trị chuỗi 1366 không chính xác cho cột ở hàng 1

\xE4\xB8\xAD\xE6\x96\x87 là hex cho 中文 ("Tiếng Trung").

Trong MySQL, điều này sẽ hoạt động với utf8 hoặc utf8mb4 . Tuy nhiên, vì có một số ký tự Trung Quốc cần 4 byte, bạn sử dụng utf8mb4 là chính xác. Trong khi đó, COLLATION (ví dụ:utf8mb4_unicode_ci) không quan trọng đối với Câu hỏi trong tay.

Bộ ký tự của cột riêng lẻ là quan trọng, không phải của cơ sở dữ liệu. Và 191 k bùn chỉ cần trong 5.5 và 5.6. Vui lòng cung cấp SHOW CREATE TABLE .

Một cách khác để thiết lập các tham số kết nối là phát hành SET NAMES utf8mb4 ngay sau khi kết nối. (Điều này không được ưu tiên, nhưng có thể đáng thử. Nó nên là một giải pháp thay thế cho vấn đề Gorm đã đề cập.)

Bạn có nhận được thông báo lỗi khi kết nối không? Hoặc khi đưa ra một truy vấn cụ thể? Nếu vậy, vui lòng cung cấp truy vấn đó.

Kiểm tra xem skip-character-set-client-handshake không được sử dụng.

Xem "Phương pháp hay nhất" trong https://stackoverflow.com/a/38363567/1766831

Addenda Vì bạn đã đề cập đến một thủ tục được lưu trữ, tôi khuyên bạn nên thực hiện SHOW CREATE PROCEDURE để xem nó được tạo bằng bộ ký tự nào. Dưới đây là một ví dụ về những gì có thể xảy ra:

mysql> SET NAMES latin1;
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE PROCEDURE x () BEGIN END ;
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW CREATE PROCEDURE x \G
*************************** 1. row ***************************
           Procedure: x
            sql_mode: NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `x`()
BEGIN END
character_set_client: latin1
collation_connection: latin1_swedish_ci
  Database Collation: utf8mb4_unicode_520_ci
1 row in set (0.00 sec)

mysql> DROP PROCEDURE x;
Query OK, 0 rows affected (0.01 sec)

so với:

mysql> SET NAMES utf8mb4;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE PROCEDURE x () BEGIN END ;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW CREATE PROCEDURE x \G
*************************** 1. row ***************************
           Procedure: x
            sql_mode: NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `x`()
BEGIN END
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
  Database Collation: utf8mb4_unicode_520_ci
1 row in set (0.00 sec)

Nếu bạn không thấy utf8mb4 trên PROCEDURE của mình và FUNCTION khai báo, xây dựng lại chúng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để cập nhật hai bảng trong một truy vấn?

  2. Làm thế nào để ngăn ai đó quay lại trang trước?

  3. Làm cách nào để tôi có thể xem nội dung của một tuyên bố đã soạn sẵn?

  4. Làm cách nào để xuất kết quả truy vấn MySQL ở định dạng CSV?

  5. Truy cập mysql từ Adobe flex / AIR