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
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.