工作问题记录,方便自己以后遇到同样问题后查找。
事情起因:
最近需要将公司内部使用的一个web项目转移部署到新的电脑上面。
转移后发现当网站用户登录后,用户名显示是正常的。
但是数据库内的用户名却变成了问号。
问题排查过程:
1.一开始怀疑是数据库的编码和网页编码不一致导致的,但是通过MySQL管理工具,各种对比数据库的设置,都是utf8编码,网页也是utf8编码,实在找不到不一致的地方。
2.然后怀疑是网页代码有问题,因为项目是离职员工用java开发的,网上各种查找教程排查代码,还是摸不着头脑,找不到修改这个用户名的代码,只看到了查询。
重新梳理问题:
1.之前一个小问题的启示:
无奈,于是又重新考虑是数据库编码问题,因为网页代码没有变动,各种页面加载都是正常的,没道理会出这个问题。
加上转移数据的时候就出现过用户权限不正常,后排查发现是数据库里用户权限表没有转移正确,当时以为是工具一键同步的,还反复比对了好几次数据,没发现有两个表的数据没正确同步。
出了问题后,再次同步转移数据库数据,检查同步日志,才发现有错误提示。根据提示发现问题,解决了数据库同步权限数据错误的问题。
2.那现在就数据库的嫌疑比较大了,因为数据库编码导致乱码的问题很常见,加上前面同步问题。然后想到自己的web服务是整个文件夹复制过来的,网站页面加载运行都正常。
自己的MySQL服务是重新下载的同版本数据库程序解压安装的,只同步了一个数据。
搜索相关数据库编码问题的时候,看到了一个my.ini 文件的配置。突然想到自己确实在旧电脑上面看到了这个文件,但是因为新机器上是新安装的数据库程序,没看到这个文件,所以就没有管。
解决方法:
复制旧my.ini文件到新机器上,重新运行MySQL服务,完美解决!用户名正常加载了。
参考文章资料
1.
MySQL中出现内容显示问号的问题解决方法(mysql中内容显示问号)
2.