【刨根问底】数据库插入数据时报 incorrect string value for column 异常,如何破?
admin
2024-05-01 07:23:48
0

一、软件版本

  • OS: Windows Server 2012 R2 标准版 64位版
  • JDK: JDK8
  • MySQL: 5.7.31
  • 命令行工具:PowerShell

二、 BUG背景

在记录异常日志时,系统报 incorrect string value for column异常,一般情况下这个就是数据库字符集的问题。

查看数据库表字符集的命令。

show full columns from [table]

OK,那就尝试修改一下,看一下结果,发生异常的是日志表里的exception_detail字段,使用上述命令查看其原字符集是UTF-8,使用下述命令将其修改为utf8mb4,依旧报错。

ALTER TABLE `sys_log`
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci

那就排除这个修改项。

还有一种原因是,Tomcat编码和数据库编码不一致,WindowsTomcat默认编码为gbk,若数据库编码为utf-8,会导致中文无法插入。

因此,需要在Tomcat启动参数中,虚拟机参数增加-Dfile.encoding=UTF-8

三、使用PowerShell和cmd启动jar包

注意同样的命令, 如java -jar -Dxxx=xx,在PowerShell和在cmd中运行结果是不同的。

如,在cmd中,直接运行 java -Dfile.encoding=utf-8 -jar xxx.jar完成程序执行。

但是在PowerShell中,参数必须加引号,运行 java '-Dfile.encoding=utf-8' -jar xxx.jar完成程序执行。如果不加引号,报加载不了主类

四、最佳实践

强烈推荐,在执行java程序时,参数部分,后续统一要求带文件的的编码方式。

 java  '-Dfile.encoding=utf-8' -jar xxx.jar

相关内容

热门资讯

特朗普再发文:将于13日10时... 美东时间13日凌晨,美国总统特朗普在个人社交媒体平台上再次发声称,美国将于美国东部时间4月13日上午...
霍尔木兹海峡船舶通行再次完全中... 来源:上观新闻 当地时间4月13日,央视记者获悉,有英国方面消息显示,在美国总统特朗普在社交媒体平台...
原创 美... 【军武次位面】 作者:丰羽 据俄罗斯EADaily网站4月6日报道,美国总统特朗普抱怨库尔德人抛弃了...
英媒:特朗普“封锁令”逼停霍尔... 新华社伦敦4月13日电(记者高文成)据英国航运媒体《劳埃德船舶日报》12日报道,美国总统特朗普宣布将...
乌兰,无偿接受他人提供的高档服... 中央纪委国家监委网站4月13日消息,经中共中央批准,中央纪委国家监委对湖南省人大常委会原党组书记、副...
原创 4... 43岁的古某在社交平台晒出海边旅行照,本是记录生活,却因穿着鲜艳、身材丰腴遭网络群嘲。面对“大妈味浓...
特朗普:不在乎伊朗是否重返谈判... 在美国与伊朗谈判未果后,美国总统特朗普12日表示,他并不在乎伊朗是否重返谈判桌,称美国将于美国东部时...
英国首相和法国总统通话讨论中东... △英国首相斯塔默 当地时间12日,据英国首相府消息,英国首相斯塔默和法国总统马克龙通电话讨论中东局势...
考虑中国市场人事调整?GE医疗... 9月20日消息,在传出出售中国业务后,GE医疗中国区又传出人事调整的消息,涉及计算机断层扫描 (CT...
下周3只个股解禁比例超五成 9月19日消息,下周将有51只个股解禁,按照最新收盘价计算,合计解禁市值619.22亿元。合合信息下...