You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从MySQL迁移数据至SQLite失败,如何生成兼容脚本或自动转换?

这种情况太常见了!MySQL和SQLite的语法差异确实不小,mysqldump默认导出的脚本里一堆SQLite不认的东西。我给你几个靠谱的解决办法,从简单调整到省心工具都有:

方法1:调整mysqldump参数,生成更兼容的初始脚本

先从源头减少不兼容内容,给mysqldump加几个参数,让它输出尽量贴近SQLite的语法:

mysqldump --compatible=sqlite --no-create-db --skip-lock-tables --skip-comments -u 你的MySQL用户名 -p 要迁移的数据库名 > mysql_dump.sql

每个参数的作用:

  • --compatible=sqlite:强制mysqldump生成SQLite兼容的语法
  • --no-create-db:去掉CREATE DATABASE语句(SQLite不需要创建数据库,直接操作.db文件)
  • --skip-lock-tables:避免生成LOCK TABLES和UNLOCK TABLES(SQLite不支持这些命令)
  • --skip-comments:移除所有COMMENT相关的语句(SQLite不支持表/列的注释)
方法2:用脚本批量修复现有SQL文件

如果已经有了导出的脚本,用sed、awk这类工具批量替换不兼容内容:

  1. 删掉LOCK/UNLOCK TABLES语句:
sed -i '/^LOCK TABLES/d; /^UNLOCK TABLES/d' mysql_dump.sql
  1. 移除所有COMMENT子句:
sed -i '/COMMENT/d' mysql_dump.sql
  1. 处理ON UPDATE(比如ON UPDATE CURRENT_TIMESTAMP):
sed -i 's/ON UPDATE CURRENT_TIMESTAMP//g' mysql_dump.sql
  1. 转换MySQL的KEY为SQLite的CREATE INDEX:
    MySQL的KEY是在CREATE TABLE里定义的,SQLite需要单独的建索引语句。可以用这个awk脚本处理:
BEGIN { in_create=0; table_name="" }
/^CREATE TABLE/ {
    in_create=1;
    match($0, /`([^`]+)`/, tbl);
    table_name=tbl[1];
    print $0;
    next;
}
/^)/ && in_create {
    in_create=0;
    print $0;
    next;
}
in_create && /^  KEY/ {
    match($0, /`([^`]+)` \(([^)]+)\)/, idx);
    print "CREATE INDEX " idx[1] " ON " table_name " (" idx[2] ");";
    next;
}
{ print $0; }

把脚本存为convert_keys.awk,然后运行:

awk -f convert_keys.awk mysql_dump.sql > converted_dump.sql
方法3:用专门的迁移工具(最省心)

手动改脚本容易漏,推荐用现成的迁移工具——mysql-to-sqlite3,它能直接连接MySQL数据库,自动处理所有语法差异,直接导出到SQLite文件:

  1. 安装工具:
pip install mysql-to-sqlite3
  1. 执行迁移:
mysql2sqlite -f 目标SQLite文件名.db -u MySQL用户名 -p MySQL密码 -d 要迁移的MySQL数据库名

这个工具会自动处理数据类型转换(比如MySQL的INT(11)转SQLite的INTEGER)、自增主键、索引等问题,几乎不用手动干预。

额外注意事项
  • SQLite没有ENUM类型,迁移时会自动转成TEXT,如果有需要可以后续用约束补充
  • SQLite的INTEGER PRIMARY KEY会自动实现自增,不需要AUTOINCREMENT(除非你要求严格不重用已删除的ID)
  • 大字段(比如MySQL的TEXT/BLOB)在SQLite里都能正常存储,不用额外处理

内容的提问来源于stack exchange,提问作者altralaser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:25:45