网站迁移后编码乱码处理:数据库导入导出字符集_MySQL_MariaDB_数据库运维
服务器迁移或者版本升级后,数据库容易出问题。这时候不能凭感觉改配置,需要按顺序排查。整理一份排查清单,从最常见的原因开始,逐步缩小范围。
数据库备份恢复是运维基本功。备份完不验证,真到要用的时候发现备份损坏就晚了。恢复时字符集不匹配、版本差异、外键约束都可能导致导入失败。
操作方法如下,新手也能跟着完成。
数据库连接超时先看wait_timeout参数。show variables like 'wait_timeout',默认8小时,连接闲置超过这个时间会被断开。PHP长连接或者连接池配置不当会用到已断开的连接,报MySQL server has gone away。调大wait_timeout或者用连接池检测。
连接数满了报Too many connections。show variables like 'max_connections'看上限,show processlist看当前连接。临时解决是kill空闲连接,长期解决是调大max_connections或者优化程序释放连接。连接数不是越大越好,要根据服务器内存调整。
表损坏用CHECK TABLE和REPAIR TABLE。MyISAM引擎容易损坏,InnoDB一般不会。myisamchk命令行修复更快,myisamchk -r tablename.MYI。修复前先备份表文件,修复失败还能恢复。频繁损坏说明磁盘有问题或者服务器异常断电。
字符集乱码统一用utf8mb4。创建数据库指定DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,表和字段也用utf8mb4。PHP连接后执行SET NAMES utf8mb4。已经是gbk的数据要先导出转码再导入,直接改字符集会乱码。
几个容易踩坑的地方提前说一下。
表单和用户输入要做验证和过滤。前端验证提升体验,后端验证保证安全,前端可以绕过所以后端必须做。SQL用参数化查询防注入,输出用htmlspecialchars防XSS,上传文件校验类型和大小并重命名。
命令操作前先确认路径和参数。rm -rf删错目录、mv覆盖错文件、chmod改错权限,这些都是不可逆操作。执行前ls看一下当前目录,命令里用绝对路径,重要文件操作前先备份。
网站迁移前先在新环境测试。新服务器搭好环境,导入数据,用hosts文件解析域名到新IP测试,所有功能正常再切解析。解析生效后观察1到2天,确认没问题再关旧服务器。不要直接关旧站,出问题能快速切回。
实际操作中还会碰到一些衍生问题,这里一并说明。
问:改完配置不生效怎么办?答:先确认改的是正在用的配置文件,多版本PHP或者多站点配置文件路径不一样。改完重载对应服务,清缓存包括CDN缓存和浏览器缓存。用无痕模式或者强制刷新(Ctrl+F5)测试。
问:Linux命令记不住怎么办?答:常用命令就那十几个,man命令看手册,--help看参数。历史记录用方向键翻,history看所有执行过的命令。复杂操作写脚本,下次直接运行脚本不用记命令。运维文档记录常用操作步骤,照着做就行。
总结核心三步:确认问题原因、按标准流程操作、验证结果并做好备份。文档和社区资源比较完善,遇到陌生问题先查官方资料,不要盲目改配置。操作过程每一步留痕,出问题能快速回滚。

更新时间:2026-08-26 21:00:21