迁移后需同步max_allowed_packet、sql_mode、时区、字符集及lower_case_table_names等关键参数:旧值需显式配置到my.cnf并重启生效,避免隐式降级或行为偏差。
迁移后 max_allowed_packet 突然报错
新服务器默认值常为 4MB,而旧库可能设为 64MB 或更高。若应用执行大 BLOB、长 INSERT 或导出导入操作,会直接触发 Packet too large 错误。
- 检查旧库:登录原 MySQL,执行
SHOW VARIABLES LIKE 'max_allowed_packet'; - 新库需同步该值,修改
my.cnf中的max_allowed_packet = 64M(注意单位是M,不是MB) - 必须重启 MySQL 生效,仅
SET GLOBAL无法突破启动时上限
sql_mode 不一致导致 INSERT 失败
MySQL 5.7+ 默认启用严格模式(如 STRICT_TRANS_TABLES),而老环境可能是空或宽松模式。迁移后常见报错:Incorrect integer value: '' for column 'id' at row 1。
- 导出旧库当前模式:
SELECT @@sql_mode; - 新库配置中显式设置
sql_mode = "...",不要依赖默认值 - 若业务依赖宽松行为(如隐式类型转换),不建议直接照搬旧值;应优先修复 SQL,再逐步收紧模式
时区和 timestamp 行为差异
旧服务器可能设为 SYSTEM(即系统本地时区),新服务器若未配置,DEFAULT CURRENT_TIMESTAMP 字段可能按 UTC 写入,造成时间偏移。