Laravel迁移不起作用

时间:2017-02-01 14:49:54

标签: php laravel migration artisan migrate

当我发出命令" php artisan migrate"它给了我错误:

base table or view already exists: 1050 table 'users' already exists.

并没有更新我的数据库表。我回滚并再次迁移它,但对DB没有任何影响,我创建了新项目,但它也给出了这个命令的错误。

4 个答案:

答案 0 :(得分:0)

在您的迁移中首先进行此检查

  Schema::hasTable('users');

如果您没有数据,可以先手动删除列。

答案 1 :(得分:0)

我认为您的迁移是在DB中创建表users。此错误仅表示此类数据库中的表users already exits,因此无法创建。

您实际可以做的是创建一个新的空数据库,或者重新创建整个数据库,以防您丢失数据,我从您的帖子中假设。

回滚仅撤消上次迁移步骤。你可能会跑:

$ php artisan migrate:rollback --step=2 # rollback two last migrations

$ php artisan migrate:reset # rollback all migrations

我建议您浏览Database: Migrations,这样您就可以获得有关数据库迁移的更多知识。

答案 2 :(得分:0)

由于您运行了迁移,因此在数据库的migrations表中引用了迁移迁移。您需要手动删除该记录,以便再次运行相同的迁移。

migration表跟踪您运行的迁移。在迁移实际发生之前,Laravel将记录写入migration表。

如果发生错误,迁移将失败,但存在引用记录。因此错误

  

基本表或视图已存在:1050表'用户'已经存在。

解决此问题的最简单方法是,修复迁移文件的问题,从迁移表中删除引用记录并再次运行迁移。

答案 3 :(得分:0)

请按照以下步骤操作:

首先检查您当前的迁移状态 php artisan migrate:status

跳过已导入的表并查找新的迁移文件,并从新的迁移文件中删除create语句。

这里的问题是你的新迁移文件可能包含create语句而不是alter / drop等。

一旦修复该语句,请尝试运行

php artisan migrate