插入西里尔文本时出现异常:字符串值不正确:' \ xD1 \ x82 \ xD0 \ xB5 \ xD1 \ x81 ...'对于专栏' '在第1行错误代码:1366

时间:2016-12-20 10:35:44

标签: mysql utf

我有MySQL表及其列及其属性:

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

我尝试在包含Cyrillic文本的表中插入新数据。

这是我的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'

我该怎么做才能解决这个异常?

1 个答案:

答案 0 :(得分:3)

似乎您的数据库的默认字符集可能是拉丁语或其他字符集,但它不存储西里尔字母。
使用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?