首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQLSTATE[42000]:语法错误或访问冲突: 1064您的SQL语法中有一个错误,

SQLSTATE[42000]:语法错误或访问冲突: 1064您的SQL语法中有一个错误,
EN

Stack Overflow用户
提问于 2021-12-06 17:35:23
回答 1查看 202关注 0票数 0

我有这个表电影( with movie_id )和表参与者( actor_id ),它们都连接到表电影演员,其中包含E 110参与者_id<代码>E 211 PK FK和E 112电影_id<代码>E 213 PK FK。

当我尝试运行时,我在Visual代码中获得了这个eror:php迁移:

SQLSTATE42000:语法错误或访问冲突: 1064您的SQL语法出现了错误;请检查与MariaDB服务器版本对应的手册,以获得在第1行(SQL: create ()默认字符集utf8mb4排序规则‘utf8mb4_unicode_ci ')上使用的正确语法,以获得使用utf8mb4默认字符集“utf8mb4_unicode_ci”的正确语法。

代码语言:javascript
运行
复制
<?php

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

class CreateActorsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('actors', function (Blueprint $table) {
            $table->id('actor_id');
            $table->string('first_name',100);
            $table->string('last_name',100);
        });
        Schema::create('movie_actor', function (Blueprint $table) {
            $table->foreign('actor_id')->references('actor_id')->on('actors');
            $table->foreign('movie_id')->references('movie_id')->on('movies');
            $table->primary(['actor_id','movie_id']);
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('actors');
        Schema::dropIfExists('movie_actor');
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-12-06 18:00:40

movie_actor中没有定义任何列。

如果希望同时创建列,然后将其设置为外键,请使用foreignId而不是foreign,但请检查医生们是否有正确的语法,因为它不完全相同。就你而言:

代码语言:javascript
运行
复制
     Schema::create('movie_actor', function (Blueprint $table) {
            $table->foreignId('actor_id')->constrained();
            $table->foreignId('movie_id')->constrained();
            $table->primary(['actor_id','movie_id']);
        });

这将自动确定正确的表名和id名,前提是您遵循这些约定。

注意:您可以使用constrained('table_name', 'primary_key_name')精确地指定表和主键名应该是什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70249538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档