MySQL错误之Incorrect string value: '\xE7\x81\xAB\x..' 问题解决
在实验过程中需要将输出参数写入数据库,在写的过程中执行到lab_dynamic_order.upd_upd()语句时出现了错误,自己起初还不明白到底是哪里出现了错误。尝试性求助度娘,网上有人说是因为输入中文字符的缘故。故自己将待写入的包含中文字的字符串复制到mysql中,保存时出现了Incorrect string value: '\xE7\x81\xAB\xE7\x8B\x90...' for column 'tout' at row 1的错误提示。接着又是一番搜索,解决方法如下:
将相应的列改为utf8-utf8_general_ci即可。
处理后的结果如下
附---MySQL支持的数据类型
MySQL 提供了8个基本的字符串类型,分别:CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 各SET等多种字符串类型。
可以存储的范围从简单的一个字符到巨大的文本块或二进制字符串数据。
字符串类型 字节大小 描述及存储需求
CHAR 0-255字节 定长字符串
VARCHAR 0-255字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65535字节 二进制形式的长文本数据
TEXT 0-65535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LOGNGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据
VARBINARY(M) 允许长度0-M个字节的定长字节符串,值的长度+1个字节
BINARY(M) M 允许长度0-M个字节的定长字节符串
CPU超负荷异常情况
问题
项目部署阶段,提交订单时总是出现cpu超负荷工作情况,导致机器卡死,订单提交失败。通过任务管理器可见下图所示:
通过任务管理器中进程信息(见下图)进行查看,可见正是由于项目运行的原因导致CPU超负荷工作。元凶究竟是谁?难道是因为输出的测试语句太多导致的,尝试减少测试输出语句。
追根溯源
经查,是在进行提交订单即执行3002交易时发生的错误。再次运行查看到底是那一步造成的,难道是操作数据表的缘故?用事实说话。如下图所示在执行到操作订单主表lm_bill时,程序便停止运行了,此时CPU已达到100%!
果然如此,执行到
SELECT * FROM lmapp.lm_addr where uid='U18353102068' AND addrid='1' limit 0,1000
Sql语句时,此刻在数据库中查询结果为空!而程序在一直处于等待状态!可见,自己的业务逻辑出现了严重漏洞!
捕获到以下错误:
java.sql.SQLException: Incorrect string value: '\xA2\x97\xE7\xB2\x92' for column 'medname' at row 1
原因是在网数据库中写数据时不知何时将特殊字符加进去了,以至于读表时出现了意想不到的异常。
- 点赞
- 收藏
- 关注作者
评论(0)