必须先确认数据库编码匹配,Laravel默认使用utf8mb4,phpMyAdmin新建库时可能默认latin1或旧utf8,不匹配会导致中文、emoji乱码或报错Incorrect string value;需在phpMyAdmin中选utf8mb4_unicode_ci排序规则,并删SQL文件中的CREATE DATABASE和USE语句。
导入前必须确认数据库编码是否匹配
laravel 默认使用 utf8mb4 编码(支持 emoji 和四字节 utf-8),而 phpmyadmin 新建数据库时可能默认为 latin1 或旧版 utf8。如果直接导入,中文、emoji 或某些特殊字符会变成乱码或报错 incorrect string value。
- 在 phpMyAdmin 左侧选中目标数据库 → 点击「操作」选项卡 → 在「排序规则」下拉框中选
utf8mb4_unicode_ci(不是utf8_unicode_ci) - 若数据库尚未创建:新建时在「排序规则」处手动选
utf8mb4_unicode_ci,别依赖默认值 - 检查
config/database.php中'charset' => 'utf8mb4'和'collation' => 'utf8mb4_unicode_ci'是否已配置
SQL 文件里不能含 CREATE DATABASE 语句
phpMyAdmin 导入界面只作用于当前选中的数据库。如果导出的 SQL 文件开头有 CREATE DATABASE `xxx` 或 USE `xxx`,导入会失败,报错类似 No database selected 或权限拒绝。
- 用文本编辑器打开 Laravel 导出的 SQL 文件(如
database.sql),删掉所有以CREATE DATABASE、DROP DATABASE、USE `xxx`开头的行 - 保留从
CREATE TABLE开始的实际表结构和数据部分即可 - 如果用
mysqldump导出,加--no-create-db --skip-triggers参数可避免生成这些语句
大文件导入需调高 phpMyAdmin 限制
Laravel 项目导出的 SQL 文件常超 2MB,而 phpMyAdmin 默认限制 upload_max_filesize = 2M、post_max_size = 8M,上传会卡在进度条 0% 或提示 File is empty, please select a file。
- 修改 phpMyAdmin 所在服务器的
php.ini:调高upload_max_filesize、post_max_size、max_execution_time(建议设为300) - 重启 Web 服务(如
sudo systemctl restart apache2或nginx) - 若无服务器权限,改用命令行导入:
mysql -u root -p database_name
导入后检查迁移状态与外键约束
即使 SQL 成功导入,Laravel 的 php artisan migrate:status 仍显示未运行,因为导入绕过了迁移记录表 migrations。此外,若导出时没禁用外键检查,导入中途可能因依赖顺序失败。
- 导入完成后,手动清空或补全
migrations表,确保每条迁移记录对应已存在的表结构(否则后续php artisan migrate会重复执行或跳过) - 检查 SQL 文件开头是否有
SET FOREIGN_KEY_CHECKS = 0;和结尾的SET FOREIGN_KEY_CHECKS = 1;;没有的话,导入前手动加上,避免外键冲突 - 导入后运行
php artisan db:seed前,确认种子类不重复插入主键冲突的数据
php.ini,这时候命令行导入几乎是唯一可靠路径。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











