Navicat如何跨服务器迁移表结构和数据

老明酱_4910

老明酱_4910

2026-08-29

294人浏览

原创

navicat的数据传输功能是唯一能同时处理跨服务器、表结构+数据及外键依赖的可靠方式;需确保源库有select权限、目标库有create/insert权限,提前建好同字符集的目标数据库,并严格按“左源右目标”操作,大表迁移须关闭事务、开启批量插入,字段类型不兼容时需手动映射。

直接用 navicat 的 数据传输 功能就行,这是唯一能同时处理跨服务器、表结构 + 数据、外键依赖的可靠方式。其他方法要么不跨服务器(如 create table like),要么只迁数据(如 csv 导入),要么要手动拼 sql(易出错且难审计)。

确认源库和目标库连接都正常且权限到位

很多迁移卡在第一步,不是功能不会用,而是连接或权限没配对:

  • 源库账号必须有 SELECT 权限,否则连表字段都读不出来,数据传输 会报 “无法获取表结构” 或直接跳过该表
  • 目标库账号至少要有 CREATE、INSERT、DROP(如果勾选了“创建前删除目标对象”);缺 CREATE 会导致建表失败,错误信息通常是 Access denied for user 'xxx'@'%' to database 'xxx'
  • 目标数据库必须提前建好,且字符集建议与源库一致(如 utf8mb4),否则中文字段可能变成 ???;Navicat 不会自动帮你建库,也不会校验字符集是否匹配
  • 如果走 SSH 隧道,Navicat 连接配置里“连接方式”必须选 SSH,且隧道本地端口不能被其他程序占用(常见冲突端口:3306、2222)

启动 数据传输 时方向别选反

Navicat 不自动推断流向,“左边是源、右边是目标”是硬规则,选反了就是把测试库清空再写进生产库——真有人干过这事。

  • 打开 工具 → 数据传输,左侧“源”选线上库连接,右侧“目标”选测试库连接
  • 下方“源数据库”和“目标数据库”下拉框要分别点开选,不能默认同名——比如源是 prod_user,目标可以是 test_user_v2
  • 如果目标库已存在同名表,默认行为是清空再插入;若想追加数据,得取消勾选 创建前删除目标对象,并确保目标表结构与源表完全一致,否则 INSERT SELECT 会因字段数/类型不匹配失败

高级设置里几个关键开关要按需开闭

默认设置适合小表全量迁移,但大表或特殊场景下必须调:

OGT Docs Create
OGT Docs Create

在文档优先系统中创建新的文档实体。路由至专门的任务、定义、规则、功能及社交内容创建子技能。用于添加任何新文档。

下载
  • 包含外键限制 建议勾选,否则外键约束丢失,后续 INSERT 可能因父表缺失报错 Cannot add or update a child row: a foreign key constraint fails
  • 使用交易 对大表迁移慎用:开启后失败会回滚全部,但耗内存且可能锁表太久;数据量超 10 万行建议关掉,靠日志定位失败点更可控
  • 运行多重插入语句 和 使用扩展插入语句 必须一起开,否则单条 INSERT 插 1 行太慢;但目标 MySQL 版本低于 5.7 时,VALUES (...),(...) 可能被截断,此时改用 使用完整插入语句
  • 遇到错误继续 只在调试阶段开,正式迁移必须关——它会跳过报错行,导致数据不一致却无提示

字段类型不兼容时必须手动调映射

Navicat 自动匹配同名字段,但类型不兼容时不会报错,而是静默失败或插错值:

  • 比如源表 created_at DATETIME,目标表是 ctime TIMESTAMP,不调映射会直接报 Data too long for column 'ctime' 或插成 0000-00-00 00:00:00
  • 点击 高级 → 调整字段映射,在对应字段右侧点“表达式”,填 UNIX_TIMESTAMP(created_at) 或 FROM_UNIXTIME(ctime) 做转换
  • 目标为 PostgreSQL 时,MySQL 的 TINYINT(1) 默认映射成 BOOLEAN,但若源数据含 2/3 等非 0/1 值,就得改成 SMALLINT 并手动写转换表达式

真正容易被忽略的是:跨服务器迁移没有“回滚”概念,数据传输 过程中目标库写入不可逆,哪怕只差最后一张表没传完,前面的表也已经覆盖了。所以务必先在空库上试跑一次,用 SELECT COUNT(*) 对比每张表行数,再检查几条关键记录的字段值是否正确——尤其是时间、JSON、BLOB 类型。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

880

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2672

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

896

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

789

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2416

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4452

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

727

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习