php - 迁移数据库时出错(Laravel):表已存在
问题描述
我已经安装了 Laravel 的 auth 和 chatter 论坛包。当我尝试迁移数据库时,出现此错误:
迁移:2014_10_12_000000_create_users_table Illuminate\Database\QueryException:SQLSTATE[42S01]:基本表或视图已经存在:1050 表“用户”已经存在(SQL:创建表“用户”(“id”int unsigned not null auto_increment 主键,“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) 默认字符集 utf8mb4 collate 'utf8mb 4_unicode_ci') 在 C:\xampp\htdocs\Application\vendor\laravel\framework\src\Illuminate\Databas e\Connection.php:664 660| // 如果尝试运行查询时发生异常,我们将格式化错误 661| // 包含与 SQL 的绑定的消息,这将使异常 a 662| // 对开发人员更有帮助,而不仅仅是数据库的错误。 663| 捕获(异常 $e){ 664| 抛出新的查询异常( 665| $query, $this->prepareBindings($bindings), $e 666| ); 667| } 668| 异常跟踪: 1 PDOException::("SQLSTATE[42S01]: 基表或视图已经存在:1050 表'用户'已经存在") C:\xampp\htdocs\Application\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458 2 PDOStatement::execute() C:\xampp\htdocs\Application\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458 请使用参数 -v 查看更多详细信息。
我尝试使用以下命令进行迁移:
php artisan migrate
解决方案
如果您检查错误跟踪,它几乎在底部显示:
基表或视图已存在:1050 表“用户”已存在”)C:\xampp\htdocs\Application\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458
这意味着该users
表已经存在,因此当您运行迁移时,它会尝试创建一个已经在您的数据库中创建的表,因此会出现错误。
因此,在再次运行之前撤消此迁移,您可以执行以下操作:
php artisan migrate:refresh
检查有关回滚迁移的文档。
这将down()
在实际运行之前运行系统中已迁移的每个迁移文件的功能up()
。
如果你去你的users
迁移,你可以看到这个down()
函数,它应该是这样的:
数据库/迁移/XXXX_XX_XX_XXXXXX_create_users_table.php
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
每当您创建迁移时,请始终实现该down()
方法,以利用回滚选项。
推荐阅读
- javascript - 如何通过值Javascript从对象数组中获取键
- typescript - 在 VS 代码中调试 typescript 测试
- python - PyCharm:让“在控制台中执行代码”停止询问我是哪个控制台
- html - 在多个 div 上显示/隐藏而不定义 div 元素 id
- python - 如何动态地将数据传递给 scipy.stats Levene 的测试函数?
- c++ - 我可以创建一个用六个随机数填充 100 个数组的循环吗
- android - 如何构建具有两种不同启动行为的移动应用程序?
- html - 在 IE 中单击选择标签时选择会突出显示
- wordpress - WP Media 插入文本编辑器
- javascript - 如何在本地编辑项目并将更改推送到我的 vps?