MySQL数据库插入中文时出现Incorrect string value: 'xE6x97xB7xE5x85xA8' for column 'sz_name

Posted huangzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库插入中文时出现Incorrect string value: 'xE6x97xB7xE5x85xA8' for column 'sz_name相关的知识,希望对你有一定的参考价值。

今天在开发时候出现了这个问题

Incorrect string value: ‘xE6x97xB7xE5x85xA8‘ for column ‘sz_name‘ at row 1

场景,往mysql数据库的表中插入中文参数,抛出了这个异常

我用sqlyog执行该段代码时候发现只是出现警告,并没有出现error,但是在代码里面执行抛出了异常,说明管理工具sqlyog对有些约定不是那么严格,而代码中就会报错。提醒自己,以后写sql时候不能忽略管理工具中出现的警告。

解决方案:

在用sql语句建表的时候加入  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci  即可

下面是我的建表语句:

CREATE TABLE `stat_day_exception_201807` (
  `ng_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `ng_report_id` bigint(20) DEFAULT NULL,
  `nt_type` int(11) NOT NULL,
  `sz_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `sz_reason` text COLLATE utf8_unicode_ci,
  `bt_charge` int(11) DEFAULT ‘0‘,
  `ts_begin` datetime DEFAULT NULL,
  `ts_end` datetime DEFAULT NULL,
  `bt_attendance` int(11) DEFAULT ‘0‘,
  `nt_count` decimal(10,4) NOT NULL DEFAULT ‘0.0000‘,
  `nt_minutes` int(11) DEFAULT ‘0‘,
  `sz_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `ng_user_id` bigint(20) DEFAULT NULL,
  `dt_date` datetime DEFAULT NULL,
  PRIMARY KEY (`ng_id`),
  KEY `I_stat_day_exception_sys_user` (`ng_user_id`),
  KEY `I_stat_day_exception_day` (`dt_date`)
) ENGINE=InnoDB AUTO_INCREMENT=1701 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci



















以上是关于MySQL数据库插入中文时出现Incorrect string value: 'xE6x97xB7xE5x85xA8' for column 'sz_name的主要内容,如果未能解决你的问题,请参考以下文章

Mysql - php上传数据 - 错误 - 1366 Incorrect String value

使用 PHP 将数据插入 MySQL 数据库时出现问题

插入大量数据时出现 mod_python/MySQL 错误:“OperationalError: (2006, 'MySQL server has gone away')”

使用数组插入 MYSQL 时出现 PHP 错误

在 PHP 中插入 MySQL 表时出现语法错误 [重复]

mysql 插入中文报错: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value...