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

通过管道迁移MySQL数据库到其他服务器时执行脚本出现报错

故障原因

  • 核心问题是脚本换行符格式不兼容:你创建的脚本使用了Windows风格的CRLF(\r\n)作为换行符,而Linux系统仅识别LF(\n)换行,导致命令行末尾多出了一个不可见的回车符\r。
  • 报错里的'RROR 1102 (42000): Incorrect database name 'kodi_video119是典型的回车符导致的显示异常:mysql实际读取到的数据库名是kodi_video119\r,属于非法库名;输出报错时\r会让光标回到行首,后续的单引号覆盖了原ERROR的首字母E,才会显示为奇怪的'RROR开头。
  • 后续的mysqldump: Got errno 11 on write是管道断裂报错:mysql进程因库名错误提前退出,mysqldump往管道写入数据时没有接收进程,触发写入错误。

解决方法

  1. 先确认问题存在:执行cat -v test查看脚本内容,如果每行末尾出现^M标识,就证明存在多余的回车符。
  2. 转换脚本换行符格式:
    • 安装dos2unix工具后执行:dos2unix test
    • 没有dos2unix也可以用sed直接处理:sed -i 's/\r$//' test
  3. 可选优化:在脚本第一行加上#!/bin/bash声明,避免系统用不兼容的shell解析脚本。
  4. 额外安全优化:可以将数据库账号密码写入~/.my.cnf配置文件,避免命令行明文写密码触发安全警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:36:05