导入.sql文件至新数据库出现Syntax error语法错误问题咨询
原因说明
报错中出现<br />、Fatal error这类PHP+HTML内容,核心原因是你通过phpMyAdmin导出的.sql文件本身就是损坏的:
phpMyAdmin是基于PHP运行的web工具,你要导出的数据库体积过大,导出过程超过了PHP默认配置的300秒最大执行时间限制,导出进程被PHP强制终止,PHP输出的致命错误HTML代码直接被写入了.sql文件末尾,导致文件后半段不是合法SQL语法,导入时MySQL解析到HTML标签就会抛出语法错误。你确认原数据库正常、未修改导出文件不影响这个结论,因为问题出在导出环节本身就已经失败。
解决方案
- 方案1:调整原服务器PHP配置,延长执行限制
找到原服务器的php.ini配置文件,修改以下参数:
修改完成后重启对应的web服务(Apache或Nginx+php-fpm),重新用phpMyAdmin导出即可。max_execution_time = 0 # 0表示不限制执行时间,导出完成后建议改回原有安全值 memory_limit = 1024M # 可根据数据库实际大小调整,避免内存不足导致导出失败 post_max_size = 2048M upload_max_filesize = 2048M - 方案2:原服务器命令行导出(更推荐,大库导出稳定性、效率远高于web端)
原服务器如果是Linux环境,直接在终端执行导出命令即可,不会受web层的各类限制:
执行后输入数据库对应用户的密码,等待命令执行完成即可得到完整合法的SQL备份文件。mysqldump -u 数据库用户名 -p 原数据库名称 > 自定义备份文件名.sql - 方案3:分卷导出
如果原服务器只能通过phpMyAdmin操作,导出时勾选「将导出文件分卷为」选项,设置合适的单文件大小(比如100MB/卷),拆分导出避免单次执行超时。
内容的提问来源于stack exchange,提问作者NiC
相关产品推荐
相关产品推荐

