插入西里尔文本时出现异常:字符串值不正确:第 1 行的列“”的“\xD1\x82\xD0\xB5\xD1\x81...”错误代码:1366

Getting exception on inserting Cyrillic text: Incorrect string value: '\xD1\x82\xD0\xB5\xD1\x81...' for column ' ' at row 1 Error Code: 1366

我有 MySQL table 列及其属性:

name:               message
datatype:           varchar(300)
default/expression: utf8

我试图在 table 中插入包含西里尔文文本的新数据。

这是我的 sql 查询:

INSERT INTO db.log (id, info_id, user_id, timestamp, operation, message) 
  VALUES ('792','575', '35','2016-12-20 12:09:45','add',
  'user@gmail.com created new line тест ')

我遇到了异常:

1 row(s) affected, 1 warning(s): 1366 Incorrect string value: '\xD1\x82\xD0\xB5\xD1\x81...' for column 'message'

如何解决异常?

您的数据库的默认字符集似乎是拉丁文或其他字符集,但它不存储西里尔文。
使用 ALTER DATABASE 和 ALTER TABLE 命令确保字符集正确:

ALTER DATABASE your_DB_name CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

在此处查看有关您的问题的更多信息: How to convert an entire MySQL database characterset and collation to UTF-8?