Laravel 5.8:总是给出多个主键语法或访问冲突错误
Posted
技术标签:
【中文标题】Laravel 5.8:总是给出多个主键语法或访问冲突错误【英文标题】:Laravel 5.8 : Always give multiple primary key syntax or access violation error 【发布时间】:2020-10-22 18:16:34 【问题描述】:我用复合主键创建了迁移文件,但总是报错
语法错误或访问冲突:1068 多个主键定义(sql : alter table 'table_currency' 添加主键 table_currency_code_user_id_primary('code', 'user_id'))
Schema::create('table_currency', function (Blueprint $table)
$table->string('code', 3);
$table->bigIncrements('user_id');
$table->string('default', 3);
$table->enum('is_active', ['0','1'])->default('0')->comment('0: Inactive, 1: Active');
$table->timestamps();
$table->primary(['code', 'user_id']);
);
我不明白为什么会出现这个错误?提前谢谢。
【问题讨论】:
【参考方案1】:如果您想在['user_id', 'code']
上创建复合主键,您需要删除附加在increments
列上的主键。您可以使用以下代码执行此操作:
Schema::create('table_currency', function (Blueprint $table)
$table->bigIncrements('user_id'); // Has a primary key
$table->dropPrimary('table_currency_user_id_primary'); // Remove the primary key from the increments column
$table->primary(['code', 'user_id']); // Set your composite primary key
$table->string('code', 3);
$table->string('default', 3);
$table->enum('is_active', ['0','1'])->default('0')->comment('0: Inactive, 1: Active');
$table->timestamps();
);
【讨论】:
以上是关于Laravel 5.8:总是给出多个主键语法或访问冲突错误的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.8 SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误
LARAVEL 5.8 - 在 foreach 中使用数组的 WHERE LIKE 子句的多个条件没有给出完整的结果