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

Masalah DataColumn MaxLength dengan MySql.Data.MySqlClient.MySqlCommand.ExecuteReader

Di tautan yang Anda berikan, dengan jelas menyatakan bahwa untuk bidang TEXT, "Panjang maksimum efektif kurang jika nilainya berisi karakter multibyte. "

UTF-8 adalah Unicode Charset, dan default untuk database Anda. Ini menggunakan representasi 1-byte untuk 128 karakter pertama, yang cocok dengan set ASCII, dan representasi 4-byte untuk karakter lainnya.

Ini berarti bahwa kolom TEXT dapat menyimpan lebih banyak atau lebih sedikit karakter tergantung pada apakah karakter tersebut ASCII atau bukan.

Sekarang, masalah Anda muncul ketika driver MySQL tidak menangani ini dengan benar, dan akan menganggap semua karakter UTF-8 memiliki lebar 4 byte , dan akan membagi Panjang Kolom dengan 4 byte dan meneruskannya ke DataTable sebagai Panjang Bidang yang sebenarnya. Ini berarti bahwa secara teknis dimungkinkan untuk memiliki beberapa teks dalam database Anda yang tidak sesuai dengan DataTable, seperti yang terjadi pada kasus Anda.

Solusi (atau solusi dalam kasus ini) untuk masalah Anda persis seperti yang telah Anda lakukan untuk saat ini, yaitu mengubah kolom menjadi tipe yang dapat berisi lebih banyak karakter, seperti MEDIUMTEXT atau LONGTEXT.

Dugaan saya adalah keputusan ini dibuat untuk menyederhanakan implementasi Driver MySQL, tetapi saya akan mempertimbangkan untuk mengirimkan laporan bug ke Oracle.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah Batas Waktu Koneksi MySQL - Aplikasi Grails di Tomcat menggunakan Hibernate dan ORM

  2. Buat Database MySQL

  3. Mencoba mengisi menu dropdown di codeigniter dengan data mysql

  4. Cara Menggunakan AspNet.Identity core di database My Sql

  5. Bagaimana cara menggabungkan tabel ke kode SQL ini?