MySQL表结构迁移翻车现场:我亲历的字符集连环坑

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
站长杂谈 154 浏览 38 回复

昨天帮朋友迁移Discuz论坛数据,本以为简单的mysqldump导入导出,结果在字符集上栽了大跟头。原库用latin1存了十年中文数据,新服务器默认utf8mb4,导进去直接乱码狂欢。

血泪教训1:一定要用--hex-blob导出二进制字段。当时没加这个参数,用户头像blob字段全变成问号,被迫连夜用16进制编辑器抢救。

更坑的是编码转换:先用iconv转存sql文件,发现auto_increment值丢失;后来改在MySQL层用convert()函数,结果索引全部失效。最终方案是建临时库中转,先按原字符集导入再alter table转码,虽然多花两小时但保住了数据。

建议各位站长迁移前务必确认三件事:1. 用SHOW CREATE TABLE核对原表结构 2. 测试环境先跑完整流程 3. 备好phpMyAdmin和命令行双通道。现在看着那个被字符集折磨到凌晨三点的黑眼圈,终于理解为什么老司机都说"编码不规范,运维两行泪"。

评论38
回复 · 38
CoolKid
CoolKid 新手漫步繁花 · #20 ·
学到了,顶一下
清醒的星星
清醒的星星 初级 · #19 ·
写得很清楚,收藏了
Yuki
Yuki 新手净世白羽 · #18 ·
已解决,谢谢楼主
EdenLin
EdenLin 初级 · #17 ·
学到了,顶一下
温柔的少年
温柔的少年 新手 · #16 ·
支持了~
Kate
Kate 新手时梦乐园 · #15 ·
感谢分享!
CoolKid🌸
CoolKid🌸 初级璃梦花海 · #14 ·
已解决,谢谢楼主
FinnLeaf
FinnLeaf 新手星灿心语 · #13 ·
学到了,顶一下
IvySky
IvySky 初级 · #12 ·
写得很清楚,收藏了
WadeYang
WadeYang 新手漫步繁花 · #11 ·
学到了,顶一下
GraceSong
GraceSong 新手 · #10 ·
已解决,谢谢楼主
孙超宁
孙超宁 新手 · #9 ·
支持了~
安静的草莓
安静的草莓 初级 · #8 ·
同求,期待更新
NinaWong
NinaWong 新手时梦乐园 · #7 ·
支持了~
快乐的草莓
快乐的草莓 初级 · #6 ·
已解决,谢谢楼主
KateStar
KateStar 初级 · #5 ·
写得很清楚,收藏了
蔡明博
蔡明博 新手 · #4 ·
同求,期待更新
予安
予安 初级 · #3 ·
感谢分享!
懒懒的汽水
懒懒的汽水 初级 · #2 ·
支持了~
Joel
Joel 初级清瑶问鼎 · #1 ·
同求,期待更新
1 2
微信客服 微信客服