Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

c# Mengalami masalah dengan mysql :Kode nilai string 1366 salah untuk kolom di baris 1

\xE4\xB8\xAD\xE6\x96\x87 adalah hex untuk 中文 ("Bahasa Cina").

Di MySQL, ini akan bekerja dengan baik utf8 atau utf8mb4 . Namun, karena ada beberapa karakter Cina yang membutuhkan 4 byte, Anda benar menggunakan utf8mb4. Sementara itu, COLLATION (mis., utf8mb4_unicode_ci) tidak masalah dengan Pertanyaan yang ada.

Rangkaian karakter kolom individu penting, bukan database. Dan 191 kludge hanya dibutuhkan di 5.5 dan 5.6. Harap berikan SHOW CREATE TABLE .

Cara lain untuk menetapkan parameter koneksi adalah dengan mengeluarkan SET NAMES utf8mb4 segera setelah terhubung. (Ini tidak disukai, tetapi mungkin patut dicoba. Ini harus menjadi solusi untuk masalah Gorm yang disebutkan.)

Apakah Anda mendapatkan pesan kesalahan saat menghubungkan? Atau saat mengeluarkan kueri tertentu? Jika ya, berikan kueri itu.

Periksa apakah skip-character-set-client-handshake tidak digunakan.

Lihat "Praktik terbaik" di https://stackoverflow.com/a/38363567/1766831

Tambahan Karena Anda menyebutkan prosedur tersimpan, saya sarankan Anda melakukan SHOW CREATE PROCEDURE untuk melihat charset apa yang dibangunnya. Berikut adalah contoh dari apa yang dapat terjadi:

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)

versus:

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)

Jika Anda tidak melihat utf8mb4 di PROCEDURE dan FUNCTION deklarasi, bangun kembali.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cocokkan tanda '%' saat mencari di database MySQL

  2. MySQL MATCH tidak berfungsi dengan dua karakter?

  3. Hilangkan subquery untuk nilai numerik rata-rata

  4. Shell Script untuk mematikan proses tidur mysql secara otomatis

  5. kueri sql sederhana, gabungkan hasil dan bagi