数据库表字段更改字符集导致与该表相关的接口报错

文章讲述了用户在使用Excel文件导入功能时遇到的问题,由于数据库未处理繁体字,作者修改了表的字符集。在正式环境中,即使表结构改变但未重启系统,导致连接池问题。通过添加异常处理和重新部署解决了问题,作者寻求关于字符集修改对连接池影响的解答。
摘要由CSDN通过智能技术生成

        昨天遇到一个奇怪的问题。我自己只是有种推测,但是也没有找到相关的资料来证明我的推测,想请大佬们看看能不能帮忙解答。

问题场景

        前段时间,在用户的使用中,对我们做的功能,提出过一个问题,说是Excel文件导入时会出现失败的情况。我们请客户提供了导入失败的文件进行分析。分析结果是在早期的数据库建设中并没有针对繁体字进行一些特殊处理。但是需要导入的文件中存在繁体字的情况。我们只能尝试去修改表字段的字符集。在网上也搜索了很多资料。最终使用了

ALTER TABLE table_name CHANGE column_name column_name column_type CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

这样形式的sql语句修改了表结构。本地测试没有了问题,也就没有多心。但是在后续的使用中。这个导入的功能在正式环境就不好使了(期间因为只是修改了表结构,没有动过系统代码也就没有重新部署)。只有本地的环境可以正常使用。同一份Excel文件在正式环境,直接就报错了,接口都没进去也没有日志。本地环境就一切正常执行。

问题排查思路

1.服务器存储空间可能满了,导致点击导入无法上传文件,就直接报错。排查结果,服务器一切正常。

2.数据库表字符集还存在问题。在使用

SHOW CREATE TABLE table_name;

查看表结构后,发现字段也修改成功。

问题原因猜测

接下里就是我的个人猜测了。

        我修改了表结构后没有重启系统,导致正式环境的连接池与表的连接出现了问题。但本地环境每次都会重启项目,重新创立连接池也就不会出现连接失败的情况。

问题解决

        基于上面的猜测,我在代码中只添加了try...catch用于定位异常的具体信息。并重新部署了项目。正式环境的功能就能正常运行了。但是这个疑问也一直在。

修改了表的字符集后,若不重新建立连接池,与那个表相关的连接就会出现问题吗?

萌新的一些不成熟的问题,还希望大佬能帮我解惑。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值