无法将SQL数据库导入本地phpMyAdmin的问题排查与解决求助
环境信息
- 线上服务器数据库:
- Server: Localhost via UNIX socket
- Server type: MySQL
- Server version: 5.5.62-log - Source distribution
- Server charset: UTF-8 Unicode (utf8mb4)
- 本地数据库:
- Server: 127.0.0.1 via TCP/IP
- Server type: MariaDB
- Server version: 10.4.22-MariaDB - mariadb.org binary distribution
- Server charset: UTF-8 Unicode (utf8mb4)
问题现象
通过线上phpMyAdmin快速导出数据库后,导入本地phpMyAdmin时触发SQL语法错误,错误提示显示导入的内容是HTML网页代码而非SQL语句,具体错误如下:
Error
Static analysis:11 errors were found during analysis.
Unexpected character. (near "{" at position 345)
Unexpected beginning of statement. (near "doctype" at position 2)
Unexpected beginning of statement. (near "html" at position 10)
Unexpected beginning of statement. (near "html" at position 17)
Unexpected beginning of statement. (near "lang" at position 22)
Unexpected beginning of statement. (near ""en"" at position 27)
Unexpected beginning of statement. (near "dir" at position 32)
Unexpected beginning of statement. (near ""ltr"" at position 36)
Unexpected beginning of statement. (near "head" at position 44)
Unexpected beginning of statement. (near "meta" at position 53)
Unrecognized statement type. (near "charset" at position 58)
SQL query: Copy<!doctype html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="referrer" content="no-referrer"> <meta name="robots" content="noindex,nofollow"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <style id="cfs-style">html{display: none;
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '<!doctype html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
...' at line 1
尝试调整导出设置但效果不明,导出的.sql文件实际包含HTML代码。
问题原因
导出的文件并非纯SQL脚本,而是phpMyAdmin的网页内容——这说明导出过程出现异常,可能是网络中断、页面加载不全,或是「快速导出」模式的默认设置导致导出失败,最终保存的是phpMyAdmin的页面HTML,而非数据库的SQL语句。
解决步骤
1. 重新导出正确的SQL文件
登录线上phpMyAdmin,按照以下流程操作:
- 选中目标数据库,点击顶部菜单栏的「导出」标签
- 选择「自定义」导出模式(放弃「快速」模式,自定义模式更可控)
- 在「输出」选项区:勾选「保存文件」,字符集选择
utf8mb4 - 在「格式」选项中选择「SQL」
- 滚动到页面底部,确认「结构」和「数据」选项均被勾选,其余默认选项保持不变,点击「执行」下载.sql文件
- 下载完成后,打开文件检查开头是否为
CREATE DATABASE或USE这类SQL语句,确保没有HTML代码
2. 导入本地数据库
- 打开本地phpMyAdmin,创建一个与线上数据库同名的空数据库,字符集设置为
utf8mb4 - 选中该空数据库,点击「导入」标签
- 选择刚下载的正确.sql文件,点击「执行」即可完成导入
3. 备选方案:命令行导出/导入
如果phpMyAdmin导出仍出现异常,可使用命令行操作:
- 登录线上服务器,执行导出命令(替换
[用户名]和[数据库名]为实际信息):
mysqldump -u [用户名] -p [数据库名] > advertisements.sql
输入数据库密码后,将生成的advertisements.sql文件下载到本地
- 在本地执行导入命令(替换
[本地用户名]和[本地数据库名]):
mysql -u [本地用户名] -p [本地数据库名] < advertisements.sql
内容的提问来源于stack exchange,提问作者ryanmcblade

