Mysql UTF8编码问题 - "字符串值不正确"

Pal*_*ani 3 .net mysql

我正在使用带有.Net连接器(6.5.4)的Mysql(5.5.27),当我试图插入一些数据时,我遇到了以下错误.

Incorrect string value: '\xF3\xB6\xA5\x89f'...' for column 'STACK_TRACE' at row 1
Run Code Online (Sandbox Code Playgroud)

我已经对堆栈溢出进行了足够的搜索,并尝试按照数据库,表和列的字符集和排序规则进行操作.

  • 'utf8''utf8_general_ci'
  • 'utf8''utf8_unicode_ci'
  • 'utf8mb4''utf8mb4_general_ci'
  • 'utf8mb4''utf8mb4_unicode_ci'

我已正确设置连接字符串中的'charset = utf8'.

  • 这个特定的unicode角色有什么问题吗?我无法控制数据,它从很多Android手机中收集.
  • 是mysql的bug吗?

Pal*_*ani 9

我通过以下更改解决了这个问题.

  • 使用"; CharSet = utf8mb4;" 在连接字符串中.我之前错过了这个.我当时正在使用"utf8".
  • 将数据库的默认字符集,表的默认字符集和所有列的字符集设置为'utf8mb4'
  • 将数据库的默认排序规则,表的默认排序规则和所有列的排序规则设置为'utf8mb4_unicode_ci'

正如@eggyal所提到的,列charset和collat​​ion只是重要的,我已经设置了所有默认值,所以我将来没有更新所有新列.