导出时未加--compatible导致5.7+导入报错,因5.7默认启用STRICT_TRANS_TABLES而允许非法日期;应使用--compatible=mysql40导出,并统一字符集为utf8mb4,导入后执行ANALYZE TABLE更新统计信息。mysqldump导出时没加--compatible,导入5.7+报错Invalid default value for 'xxx'MySQL 5.7 默认开启 STRICT_TRANS_TABLES,而老版本(如5.6)允许0000-00-00这类非法日期作为默认值。直接导出再导入会触发严格模式校验失败。实操建议:导出时显式指定兼容模式:mysqldump --compatible=mysql40 --skip-extended-insert -u root -p db_name > dump.sql(mysql40能绕过大部分默认值校验)避免用--compatible=ansi或postgresql------它们会改写语法,反而增加解析负担如果目标库是8.0,还需注意sql_mode中是否含NO_ZERO_DATE,临时关闭它比改dump更稳妥:SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';导入时卡在Creating table xxx,实际是字符集不匹配常见于从 Latin1 编码的旧库导出、导入到默认utf8mb4的新库:表结构里CHARSET=latin1被保留,但字段定义没同步更新,导致后续插入时报Incorrect string value。实操建议:导出时强制统一字符集:mysqldump --default-character-set=utf8mb4 -u root -p db_name > dump.sql导入前检查 dump 文件头是否有SET NAMES latin1,手动替换成SET NAMES utf8mb4若已导入部分表,别急着删库重来------用ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;逐表修复mysqldump --single-transaction在5.6以下主从环境中可能丢数据--single-transaction依赖一致性快照,但 MySQL 5.5 及更早版本在启用binlog_format=STATEMENT时,某些DDL(如ALTER TABLE)会隐式提交事务,导致快照失效。结果是 dump 中混入了中间态数据。 AI Code Reviewer AI自动审核代码
相关推荐
计算机毕业编程指导师4 分钟前
基于深度学习的电子垃圾与混合材料图像分类系统实战:ResNet-50迁移学习+Django部署+三种识别入口完整方案外收内放5 分钟前
FastAPI猜字谜实战(5):会话管理垆边人似月.9 分钟前
选型与快速跑通(Tesseract / EasyOCR / PaddleOCR)泡海椒12 分钟前
JQuick-SQL 逻辑数据仓库:以注册数据集构建轻量分析层Carl_奕然20 分钟前
【智能体】Loop 的四种设计模式之:Verification Loop(2026 最新版)茉莉玫瑰花茶29 分钟前
线性代数 [ 矩阵乘法与线性变换复合的联系 ]l1t33 分钟前
DeepSeek辅助编写连接sqlite的CLIgarmin Chen33 分钟前
Rag引入翔云12345634 分钟前
Gaea中配置如何更新泡海椒1 小时前
JQuick-SQL JQuickTable 模型:XML 动态 SQL 的表封装边界