当前位置: 首页 > 知识库问答 >
问题:

Laravel迁移表已经存在,但我想添加新的而不是旧的

施彬彬
2023-03-14

我以前创建了用户表。现在,我已经创建了一个新的迁移,以便在我的模式中创建一个新的books表。当我尝试运行命令时

php artisan migrate

它表明:

[Illuminate\Database\QueryException]
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' alre
ady exists (SQL: create table `users` (`id` int unsigned not null auto_incr
ement primary key, `username` varchar(255) not null, `email` varchar(255) n
ot null, `password` varchar(255) not null, `created_at` timestamp default 0
 not null, `updated_at` timestamp default 0 not null) default character set
 utf8 collate utf8_unicode_ci)

这是我的新迁移表:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateBooksTable extends Migration {
    public function up()
    {
        Schema::create('books', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('name');
            $table->string('auther');
            $table->string('area');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::drop('books');
    }
}

我怎样才能消除这个错误?

共有3个答案

姜旭
2023-03-14

我也有同样的问题。原因是migrations文件夹中的文件名与数据库中的迁移名称不匹配(请参见迁移表)。它们应该是一样的。

盛城
2023-03-14

你需要跑步

php artisan migrate:rollback

如果这也失败了,只需进入并删除所有表,您可能必须这样做,因为您的迁移表似乎被弄乱了,或者您的用户表在运行上一次回滚时没有删除该表。

编辑:

发生这种情况的原因是您之前运行了回滚,并且代码中有一些错误或者没有删除表。然而,这仍然会破坏laravel迁移表,就其而言,您现在没有将用户表向上推的记录。但是,用户表已经存在,并抛出此错误。

桂梓
2023-03-14

在v5中。x、 你可能仍然面临这个问题。因此,请尝试先使用手动删除相关表

PHP工匠修补程序

然后

Schema::drop('books')

(并用q退出)

现在,您可以成功地php artisan迁移:rollbackphp artisan迁移

如果这种情况反复发生,您应该检查迁移中的down()方法是否显示了正确的表名。(如果更改了表名,则可能是一个陷阱。)

 类似资料:
  • 问题内容: 我以前创建了用户表。现在,我创建了一个新迁移,以在架构内创建一个新的books表。当我尝试运行命令时 表明: 这是我的新迁移表: 如何摆脱错误? 问题答案: 你需要跑步 如果仍然失败,则只需删除所有您可能要做的表,因为您的迁移表似乎混乱了,或者您在运行前一个回滚时的用户表没有删除该表。 编辑: 发生这种情况的原因是您先前运行了一个回滚,并且在代码中有一些错误或没有删除该表。但是,这仍然

  • 我有一些表,我想在这个表中添加新的列。我想添加默认值为空的字符串列。 我试着这样加上去 或 但我有一个错误

  • 我在文件中的迁移中添加了一个新表。。 这是代码: 当我运行时,我的数据库中只有默认的laravel用户(和迁移)表。没有货币。 原因可能是什么? 编辑 迁移一切都很顺利。问题是: SQLSTATE[42000]:语法错误或访问冲突:1071指定的密钥太长;最大密钥长度为767字节(SQL:更改表用户添加唯一users_email_unique(电子邮件)) SQLSTATE[42000]:语法错误

  • 我想在laravel中现有的表中添加一些新列。 我已经在谷歌上搜索过了,在这些搜索之后,我已经使用命令创建了迁移。 将列添加到用户。php 创建之后,我运行这个命令。 但也犯了同样的错误: 基本表或视图已存在:1050个表“用户”已存在(SQL:create table(int unsigned not null自动递增主键,varchar(255)not null,varchar(255)not

  • 我不知道如何使用Laravel框架将新列添加到我现有的数据库表中。 我尝试使用...编辑迁移文件。 在终端中,我执行和。 如何添加新列?

  • 我需要在我的laravel项目中添加一个新列,这没有问题,我使用了进行了更新,一切正常。现在我需要找出这个表上有多少条记录,并用一些值进行更新。 我有表: 因此,我使用新的迁移文件创建了新字段: 现在我需要用一些值更新表中的这个字段,例如,如果表中有100条记录,那么我需要在每一行中插入值“carry-X”,其中X是一个从1到100的数字。例如: 逮捕令-1,逮捕令-2,......逮捕证-100