Laravel 10安装Breeze执行php artisan migrate报错求助
解决Laravel迁移时SQLSTATE[HY000]: 1813表空间已存在的问题
问题场景
执行php artisan migrate创建用户表时失败,抛出表空间已存在的错误,完整命令及错误信息如下:
E:\Xampp\htdocs\eshop>php artisan migrate INFO 准备数据库。 创建迁移表 ................................................................................. 41ms 完成 INFO 运行迁移。 2014_10_12_000000_create_users_table ..................................................................... 14ms 失败 Illuminate\Database\QueryException SQLSTATE[HY000]: General error: 1813 Tablespace for table `laraveleshop`.`users` exists. Please DISCARD the tablespace before IMPORT (Connection: mysql, SQL: create table `users` (`id` bigint unsigned not null auto_increment primary key, `name` varchar(255) not null, `email` varchar(255) not null, `email_verified_at` timestamp null, `password` varchar(255) not null, `remember_token` varchar(100) null, `created_at` timestamp null, `updated_at` timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci') 错误堆栈: at vendor\laravel\framework\src\Illuminate\Database\Connection.php:793 789▕ // If an exception occurs when attempting to run a query, we'll format the error 790▕ // message to include the bindings with SQL, which will make this exception a 791▕ // lot more helpful to the developer instead of just the database's errors. 792▕ catch (Exception $e) { ➜ 793▕ throw new QueryException( 794▕ $this->getName(), $query, $this->prepareBindings($bindings), $e 795▕ ); 796▕ } 797▕ } 1 vendor\laravel\framework\src\Illuminate\Database\Connection.php:578 PDOException::("SQLSTATE[HY000]: General error: 1813 Tablespace for table `laraveleshop`.`users` exists. Please DISCARD the tablespace before IMPORT") 2 vendor\laravel\framework\src\Illuminate\Database\Connection.php:578 PDOStatement::execute()
解决方案
方法一:删除残留的表空间文件
- 定位到MySQL数据目录:XAMPP环境下路径为
E:\Xampp\mysql\data\laraveleshop(laraveleshop为你的数据库名) - 删除该目录下的
users.ibd文件(这是users表的独立表空间文件) - 重新执行
php artisan migrate
方法二:通过MySQL命令行清理
- 打开MySQL命令行,登录后执行:
USE laraveleshop; - 如果users表已存在但损坏,先删除表:
DROP TABLE IF EXISTS users; - 若表不存在但表空间残留,执行丢弃表空间命令:
ALTER TABLE users DISCARD TABLESPACE; - 重新执行
php artisan migrate
方法三:重置数据库(数据会丢失)
如果数据库无需要保留的内容,直接重建数据库:
- 登录MySQL命令行,执行:
DROP DATABASE laraveleshop; CREATE DATABASE laraveleshop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 重新执行
php artisan migrate
方法四:Laravel迁移工具重置
- 查看迁移状态:
php artisan migrate:status - 回滚最近一次迁移:
php artisan migrate:rollback - 或者直接清空所有表并重新迁移(数据丢失):
php artisan migrate:fresh
内容的提问来源于stack exchange,提问作者EFAT KHAN
相关产品推荐
相关产品推荐

