最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何在phpMyAdmin中克隆一个供开发环境使用的Laravel数据库?
时间:2026-06-19 09:01:58 编辑:袖梨 来源:一聚教程网
必须确认当前用户具备CREATE、SELECT、LOCK TABLES权限,否则克隆会因Access denied报错;需检查phpMyAdmin“用户账户”页权限或执行CREATE DATABASE test_clone验证,同时确保目标库名未占用且字符集一致。
克隆数据库前必须确认的权限和前提
phpmyadmin 本身不提供“一键克隆”功能,它依赖 mysql 的 create database 和 mysqldump 底层能力。如果你的账户没有 create、select、lock tables 权限,操作会在中途报错,典型错误是:access denied; you need (at least one of) the create privilege(s) for this operation。
确认方式:在 phpMyAdmin 的“用户账户”页查看当前登录用户的全局或数据库级权限;或者直接尝试执行 CREATE DATABASE test_clone; 看是否失败。
- 开发环境通常用本地 MySQL(如 XAMPP/MAMP),默认 root 用户有全部权限,但 Docker 容器里常被限制
- 如果用的是托管服务(如 cPanel/Shared Hosting),多数禁止
CREATE或LOCK TABLES,这时只能导出再手动建库导入 - 确保目标数据库名未被占用,Laravel 迁移会检查
information_schema,重名会导致SQLSTATE[HY000]: General error: 1007 Can't create database 'xxx'; database exists
用 phpMyAdmin 图形界面完成克隆(适合小库 & 权限完整)
这是最直观的方式,但仅适用于数据量不大(建议 php artisan migrate:fresh 可能失败。
- 在左侧数据库列表中选中源库(如
laravel_prod),点击“导出”标签页 - 格式选
SQL,导出方法选自定义→ 勾选添加 DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT 语句 - 在“对象创建选项”里,务必勾选
添加 CREATE DATABASE / USE 语句,否则导入后不会自动切换到新库 - 导出完成后,点击顶部“新建”按钮,输入新库名(如
laravel_dev),提交创建 - 回到新库页面,点“导入”,上传刚导出的 SQL 文件 —— 注意:不要在新库内再点“导入”,而要先选中新库,再点顶部“导入”
命令行 + phpMyAdmin 混合操作(推荐,避免超时与字符集问题)
图形界面容易因 PHP 超时(max_execution_time)或内存限制中断,尤其含 BLOB 字段或大文本字段时。更可靠的做法是用命令行导出,再通过 phpMyAdmin 导入(或直接 mysql 命令)。
- 在终端执行:
mysqldump -u root -p --databases laravel_prod > laravel_dev.sql(注意--databases会包含CREATE DATABASE语句) - 编辑
laravel_dev.sql,把所有CREATE DATABASE `laravel_prod`替换为CREATE DATABASE `laravel_dev`,并确保后续USE `laravel_prod`全部改为USE `laravel_dev` - 如果原库用
utf8mb4_unicode_ci,而新库创建时默认用了latin1_swedish_ci,Laravel 的DB::table()->get()可能返回乱码 —— 创建新库时显式指定:CREATE DATABASE `laravel_dev` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 导入时优先用命令行:
mysql -u root -p laravel_dev ;若必须用 phpMyAdmin,则上传前压缩为 .gz(支持 gzip 解压)以绕过 upload_max_filesize 限制
克隆后 Laravel 配置与迁移验证要点
数据库克隆完不代表 Laravel 能立刻用 —— 它不会自动更新 .env,也不会跳过已存在的迁移记录。
立即学习“PHP免费学习笔记(深入)”;
- 修改
.env中的DB_DATABASE=laravel_dev,并运行php artisan config:clear(缓存不刷新会导致还是连原库) - 不要直接跑
migrate:fresh,因为克隆库已有全部表和数据;应先执行php artisan migrate:status确认所有迁移显示yes,再根据需要php artisan db:seed - 如果原库有软删除字段(
deleted_at),且你希望开发库清空回收站,需额外执行:php artisan tinker --execute="AppModelsUser::withTrashed()->forceDelete();"(按模型调整) - 常见疏漏:忘记改
DB_HOST(Docker 环境下常是mysql而非localhost),导致连接被拒,错误信息是:SQLSTATE[HY000] [2002] Connection refused
utf8mb4_0900_as_cs 而开发环境 MySQL 版本较低时,导入会直接失败,得降级 collation。
相关文章
- ps透视裁剪工具如何使用 06-19
- 中免海南 app 普通会员冻结后怎样激活 06-19
- C4D怎么制作不规则石头模型 06-19
- 商汤日日新开发者API接入:密钥获取、权限配置与接口调用说明 06-19
- 陶瓷餐具为什么要上釉 06-19
- 福昕阅读器英文版如何切换成中文版 06-19