【问题标题】:laravel migration does not working [closed]laravel 迁移不起作用[关闭]
【发布时间】:2018-01-21 07:40:12
【问题描述】:

我之前创建了用户表。现在,我创建了一个新的迁移以在我的架构中创建一个新的 books 表。当我尝试运行命令时

php 工匠迁移 它向我展示了:

[照亮\数据库\查询异常] SQLSTATE [42S01]:基表或视图已存在:1050 表“用户”已存在 ady 存在 (SQL: create table users (id int unsigned not null auto_incr 元素主键,usernamevarchar(255) 不为空,emailvarchar(255) n ot null, password varchar(255) not null, created_at timestamp default 0 not null, updated_at timestamp default 0 not null) 默认字符集 utf8 整理 utf8_unicode_ci)

我的问题与2 相同,我运行的代码也相同。 所以,我已经尝试了这里建议的所有解决方案。但它们对我不起作用。因为我不能在帖子上制作 cmets,所以我必须将它作为一个新问题发布。希望你能意识到我的担忧并帮助我.

【问题讨论】:

  • 分享迁移代码。看来你又在创建users 表了。
  • 我认为您没有从迁移表创建用户表。检查您的迁移表。或在您的终端中运行php artisan migrate:status
  • 这是我的迁移表代码: public function up() { Schema::create('task', function (Blueprint $table) { $table->increments('id'); $table ->text('body'); $table->increments('user_id'); $table->timestamps(); }); }
  • 不,我已经创建了另外两个名为“task”和“introduction”的表。 @MilanChheda
  • 这个问题的原因是你的数据库中存在users表,但是你的migration表中没有它的记录。我想查看php artisan migrate:status 的结果。能给我看看吗?

标签: laravel migration


【解决方案1】:

感谢您的结果!

在这种情况下,您可以删除所有表,然后重做php artisan migrate

如果您不想这样做,您也可以将已经创建的迁移文件名记录插入到您的migrations 表中,然后运行php artisan migrate

在这种情况下,您不需要删除表。

例如,您似乎创建了users 表,因此请插入migration2014_10_12_000000_create_users_table 的记录,如下所示。

那么,当你运行php artisan migrate:status,你会得到如下结果。

如果是这种情况,如果你运行php artisan migratemigration文件稍后会执行2014_10_12_200000_create_password_resets_table

这样,你应该插入已经创建的migration文件名记录,然后运行php artisan migrate,就可以了!

附言

正如@mschuett 在Laravel Migration table already exists but i want to add new not the older 中所说,您的migrations 表已经搞砸了。

因为,您的数据库中有users 表,但未执行2014_10_12_00000_create_users_table 的迁移。

如果有多个迁移文件,如果您运行它并且它在某处失败,则migration 状态已为Y 到您运行的位置。

【讨论】:

  • 我已经从 mysql 中删除了所有数据库,然后当我运行 php artisan migrate 时,它​​只显示用户和重置密码表。我手动创建的其他表不在 mysql 数据库中。
【解决方案2】:

如您的屏幕截图所示,您的所有迁移都没有实际运行。您一定是手动创建了 users 表,或者您确实运行了迁移但不知何故搞砸了。

如果您不介意丢失表格中的任何数据,最简单的解决方法是(您将丢失表格中的所有数据!):

php artisan migrate:refresh

这将回滚所有迁移,并重新运行它们。

More info in the docs.

【讨论】:

    【解决方案3】:

    php artisan migrate:refresh 将删除所有数据并重新创建表,而migrate 只是创建尚不存在的表。

    如果只刷新一些表,(如果迁移不起作用),帮助我删除迁移表中的那些表和表行并进一步成功地做php artisan migrate。 (但仅在 4.2 上尝试过,但它也可能适用于更高版本)

    【讨论】:

      猜你喜欢
      • 2017-06-18
      • 2018-06-18
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      相关资源
      最近更新 更多