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

Laravel 5.6:多个主键定义错误

姬心思
2023-03-14

我创建了这个迁移脚本,但它给出了以下错误。若我将另一列的数据类型更改为字符串或其他内容,它不会给出任何错误。如何解决这个问题?

    Schema::create('incidents', function (Blueprint $table) {
        $table->string('id');
        $table->primary('id');
        $table->unsignedInteger('user_id', 255);
    });

SQLSTATE[42000]:语法错误或访问冲突: 1068多个主键定义(SQL:更改表事件添加主键incidents_id_primaryid))

SQLSTATE[42000]:语法错误或访问冲突: 1068定义了多个主键

编辑

因为没有工作,我将此用户id创建移动到另一个迁移脚本。现在它仍然无法运行第二个迁移脚本。给出了这个错误。

语法错误或访问冲突:1068多个主键定义(SQL:更改表事件adduser_idint无符号不空auto_increment主键)

似乎,如果主键不是整数,那么laravel尝试使下一个第一个整数列主键!!!

所以我的第一个剧本是,

 public function up()
 {
     Schema::create('incidents', function (Blueprint $table) {
         $table->string('id')->primary();
     });
 }

第二个剧本是,

public function up()
{
   Schema::table('incidents', function($table) {
     $table->unsignedInteger('user_id', 255);
   });
}

共有1个答案

宦瀚
2023-03-14

更新

这样做:

Schema::create('incidents', function (Blueprint $table) {
     $table->string('id')->primary();
     $table->unsignedInteger('another_column');
});

别忘了加上你的模型

protected $primaryKey = 'id';
public $incrementing = false; //If you dont want the auto-increment

问题

根据laravel文件

unsignedInteger(string $column, bool $autoIncrement = false)

您使用的函数接收bool作为参数,数字255被解释为true。我认为DB使自动递增成为一个主键

 类似资料:
  • 谁能告诉我,如何创建一个没有主键的实体? 谢了。

  • 错误结果为 “OneToOne关系的JPA问题:外键引用的列数错误。应为2” 如何为join测试表指定主键? 表A:列id与表B:列test_id映射

  • 我正在拉维尔创建一个项目。我有两个数据库表,它们是通过迁移创建的:我想在数据库模式中设置多个外键。 表用户 我想知道的是如何描述模型中的关系? 编辑: 我计划使用此关系,每个用户都属于部门,任何部门都有多个用户,每个用户只有一个部门

  • 在实体框架中,我想使用两个外键作为另一个实体类型的主键。 但是,这会给我一个缺少键的错误。 我知道我可以定义另外两个属性来保存引用实体类型的主键。Visual Studio是否不够聪明,无法自行使用它们的主键?

  • null null null null null

  • 我的项目工作正常,当我将facebook sdk添加到我的项目中时,我有一个这样的错误,我尝试了很多方法来修复这个问题,但我没有。那我该怎么办? 我的应用程序gradle在下面 这是facebookbuild.gradle