0

我从一个建立在 Laravel 5.2 之上的自学项目开始,我发现了我的第一个问题:迁移中的自我引用。

这是文件的2016_08_02_024942_create_navigation_table.php样子(我已经删除了不要让帖子太长的评论):

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

class CreateNavigationTable extends Migration
{
    public function up()
    {
        Schema::create('navigation', function (Blueprint $table) {
            $table->engine = 'InnoDB';
            $table->increments('id')->unsigned();
            $table->integer('position')->unsigned();
            $table->string('title');
            $table->string('slug');
            $table->string('permissions')->nullable();
            $table->timestamps();
            $table->softDeletes();
        });
    }

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

然后因为我在这里阅读了几篇这样的帖子,这个,这个等等制作了另一个文件,其中的关系命名为以下代码:2016_08_02_030158_add_parent_to_navigation_table.php

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

class AddParentToNavigationTable extends Migration
{
    public function up()
    {
        Schema::table('navigation', function (Blueprint $table) {
            $table->foreign('parent_id')->references('id')->on('navigation')->onUpdate('cascade')->onDelete('cascade');
        });
    }

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

但是当我运行命令时,php artisan migrate我得到了以下错误,我不确定我做错了什么:

[Illuminate\Database\QueryException] SQLSTATE[42S01]:基表或视图已经存在:1050 表“导航”已经存在(SQL:创建表navigationidint unsigned not null auto_increment 主键,positionint unsigned not null,titlevarc har(255) not null, slugvarchar(255) not null, permissionsvarchar(255) null, created_attimestamp null, updated_attimestamp null, deleted_attimestamp null) 默认字符集 utf8 collat​​e utf8_unicode_ci 引擎 = InnoDB)

[PDOException] SQLSTATE[42S01]:基表或视图已存在:1050 表“导航”已存在

任何人都可以给我一些建议吗?我做错了什么?我已经看到了这个包,但我不确定它是否能解决我的问题。

4

1 回答 1

1

SQLSTATE [42S01]:基表或视图已存在:1050 表“导航”已存在

表示您在数据库中具有相同的表名

因此,您需要验证,您在数据库中没有任何具有该名称的

  • 确保没有同名的表名
  • 再次运行迁移

    php artisan migration:rollback有时由于不同的原因无法删除表。

于 2016-08-02T03:28:35.193 回答