一般错误:在Laravel 5.6.33中,“)”附近为1:语法错误”)

时间:2018-08-28 11:41:07

标签: php mysql laravel sqlite

我对Laravel Migrations有一些问题。 我的文章和标签之间有很多关系。 'article_tag'迁移:

Schema::create('article_tag', function (Blueprint $table) {
    $table->integer('article_id')->unsigned()->index();
    $table->foreign('article_id')->refrences('id')->on('tags')->onDelete('cascade')->onUpdate('cascade');
    $table->integer('tag_id')->unsigned()->index();
    $table->foreign('tag_id')->refrences('id')->on('articles')->onDelete('cascade')->onUpdate('cascade');
});

“标签”迁移:

Schema::create('tags', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->timestamps();
});

'文章迁移:

Schema::create('articles', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title');
    $table->text('body');
    $table->timestamps();
});

我的控制台日志:

  

Illuminate \ Database \ QueryException:SQLSTATE [HY000]:常规错误:   “)”附近的1:语法错误(SQL:创建表“ article_tag”   (“ article_id”整数不为null,“ tag_id”整数不为null,外部   key(“ article_id”)在删除级联时引用“ tags”()   级联,外键(“ tag_id”)在删除时引用“ articles”()   在更新级联上级联)

异常跟踪:

  

1 PDOException::(“ SQLSTATE [HY000]:常规错误:” 1附近“]”:   语法错误”)         /home/user/Desktop/blog/vendor/laravel/framework/src/Illuminate/Database/Connection.php:452

     

2 PDO :: prepare(“ create table” article_tag“(” article_id“整数   不为空,“ tag_id”整数不为空,外键(“ article_id”)   在外部更新级联上,在删除级联上引用“ tags”()   key(“ tag_id”)在删除级联时引用“ articles”()   级联)”)         /home/user/Desktop/blog/vendor/laravel/framework/src/Illuminate/Database/Connection.php:452

最佳Javad

1 个答案:

答案 0 :(得分:5)

您的迁移中有拼写错误。您是说refrences->(),但应该是references->()

Schema::create('article_tag', function (Blueprint $table) {
        $table->integer('article_id')->unsigned()->index();
// in here
        $table->foreign('article_id')->refrences('id')->on('tags')->onDelete('cascade')->onUpdate('cascade');
        $table->integer('tag_id')->unsigned()->index();
// and in here too
        $table->foreign('tag_id')->refrences('id')->on('articles')->onDelete('cascade')->onUpdate('cascade');
    });