Incorrect string value: '\xF0\x9F\x98\x8A</...' for column `Sample`.`questions`.`Body` at row 1 hatası

alattin (17125) 4 yıl önce sordu

MSSQL veritabanından alınan verileri MariaDB veritabanına  eklemek istediğimde Incorrect string value: '\xF0\x9F\x98\x8A</...' for column `Sample`.`questions`.`Body` at row 1 hatası alıyorum.

An unhandled exception occurred while processing the request.

MySqlException: Incorrect string value: '\xF0\x9F\x98\x8A</...' for column `Sample`.`questions`.`Body` at row 1

MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in ResultSet.cs, line 49

MySqlException: Incorrect string value: '\xF0\x9F\x98\x8A</...' for column `sample`.`questions`.`Body` at row 1

MySql.Data.MySqlClient.MySqlDataReader.ActivateResultSet() in MySqlDataReader.cs, line 116

DbUpdateException: An error occurred while updating the entries. See the inner exception for details.

Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection connection)

Hatanın sebebi ve çözümü ne olabilir?  Body kolonu collation utf8_turkish_ci olarak ayarlı.

Toplam 1 cevap


alattin (17125) 4 yıl önce cevapladı

MariaDB, MySQL tabanlı olduğu için MariaDB'de utf8 sadece UTF-8'de 3 bayt ile temsil edilebilen Unicode karakterlere izin verir. Bu sebepten eğer insert edilen verinin içinde bu kurala uygun olmayan veri varsa ahata alırsınız.

Çözüm için kolonun collation değerini utf8mb4 yani utf8mb4_turkish_ci olarak değiştirmek sorunu çözecektir. Sunucu karakter (character_set_server) değerini  utf8mb4 olarak değiştirmek de sorunu çözecektir.