迁移成功但phpMyAdmin找不到新表,主因是连错库、表名大小写不一致或phpMyAdmin缓存未刷新;需确认.env中DB_DATABASE与phpMyAdmin选中库一致,检查Linux下lower_case_table_names配置,并验证迁移文件使用Schema::create()而非Schema::table()。

迁移命令显示“Migrated successfully”,但 phpMyAdmin 列表里找不到新表——大概率不是迁移失败,而是连错了库、表名大小写不一致,或 phpMyAdmin 缓存没刷新。
确认 phpMyAdmin 当前连接的是哪个数据库
phpMyAdmin 左侧数据库列表选中的库,不等于迁移实际执行的目标库。Laravel 读的是 .env 里的 DB_DATABASE,而你可能在界面里点错了库,或者根本没创建该库。
- 先在终端执行
php artisan tinker,输入config('database.connections.mysql.database'),确认 Laravel 正在用哪个库名 - 打开 phpMyAdmin,检查左侧列表是否真有这个库名(注意:含短横线如
my-app的库名必须用反引号包裹,否则 MySQL 会报语法错误) - 如果库不存在,手动执行
CREATE DATABASE `my-app` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 刷新 phpMyAdmin 页面(不是仅刷新表格列表),有时左侧导航栏需手动点击库名才能加载其下的表
检查表名大小写是否与 Linux MySQL 配置冲突
Windows/macOS 开发时建的表叫 Users,导出 SQL 或部署到 Linux 服务器后,MySQL 默认区分大小写(lower_case_table_names = 0),导致 CREATE TABLE Users 实际建出 users,但后续 SELECT * FROM Users 就报错,phpMyAdmin 也只显示小写的 users 表。
- 登录 MySQL 控制台,执行
USE your_db; SHOW TABLES;,逐行比对输出的表名(大小写、下划线) - 打开
database/migrations/xxxx_create_users_table.php,看Schema::create('users', ...)里的字符串是否全小写 - 若确认是大小写问题,不要改代码去迁就环境;要么统一用小写命名表,要么在 MySQL 配置中设
lower_case_table_names = 1并重启mysqld(仅限开发/测试环境)
排查 phpMyAdmin 自身缓存或权限问题
phpMyAdmin 不是实时监听数据库变更的客户端,它依赖 MySQL 的 information_schema 查询结果,而某些权限限制或缓存机制会导致新表不显示。
立即学习“PHP免费学习笔记(深入)”;
- 退出 phpMyAdmin 并重新登录(不是页面刷新),强制重建会话缓存
- 检查当前登录 MySQL 的用户是否有
SHOW VIEW和SELECT权限——尤其当使用宝塔等面板创建的数据库用户时,常被默认限制 - 在 phpMyAdmin 的 SQL 标签页中直接执行
SHOW TABLES FROM `your_db`;,看返回结果是否包含新表名;如果这里能查到,但左侧列表没有,基本是前端渲染或权限缓存问题 - 若用的是宝塔 + phpMyAdmin 插件,尝试在软件商店里“重载配置”或“重启 phpMyAdmin 服务”
最易被忽略的一点:迁移成功 ≠ 表结构完全符合预期。比如你在 up() 里写了 Schema::table('users', ...) 但 users 表根本不存在,Laravel 默认静默跳过(不报错),此时迁移状态标记为完成,但表并没建出来。务必先验证迁移文件是否用了 Schema::create() 而非误写成 Schema::table()。



















