我正在使用 Mysql (5.5.27) 和 .Net 连接器 (6.5.4),当我尝试插入一些数据时,出现以下错误。
Incorrect string value: '\xF3\xB6\xA5\x89f'...' for column 'STACK_TRACE' at row 1
我已经在堆栈溢出上进行了足够的搜索,并尝试了以下数据库、表和列的字符集和排序规则。
- 'utf8' 'utf8_general_ci'
- 'utf8' 'utf8_unicode_ci'
- 'utf8mb4' 'utf8mb4_general_ci'
- 'utf8mb4' 'utf8mb4_unicode_ci'
我已在连接字符串中正确设置“charset=utf8”。
- 那个特定的 unicode 字符有什么问题吗?我无法控制这些数据,它是从很多 Android 手机收集的。
- 是mysql的bug吗?
我已经通过进行以下更改解决了这个问题。
- 使用“;CharSet=utf8mb4;”在连接字符串中。我之前就错过了这个。我使用的是“utf8”。
- 将数据库的默认字符集、表的默认字符集和所有列的字符集设置为“utf8mb4”
- 将数据库默认排序规则、表默认排序规则和所有列排序规则设置为“utf8mb4_unicode_ci”
正如 @eggyal 提到的,列字符集和排序规则才重要,我已经设置了所有默认值,这样我将来就不必更新所有新列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)