gpt4 book ai didi

mysql - SQL中的主键长度

转载 作者:行者123 更新时间:2023-11-29 07:39:00 24 4
gpt4 key购买 nike

我添加了一些迁移来在 Laravel 应用程序中构建 SQL 表。

表格用户

public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('user_id')->unique();
$table->string('email')->unique();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
}

表用户角色

public function up()
{
Schema::create('userroles', function(Blueprint $table)
{
$table->foreign('user_id')->references('user_id')->on('users');
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
$table->timestamps();
});
}

但是当我运行它们时,我收到错误:

  [Illuminate\Database\QueryException]                                                                                                                                                                                          
SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'user_id' doesn't exist in table (SQL: alter table `userroles` add constraint userroles_user_id_foreign foreign key (`user_id`) references `users` (`user
_id`))

这是为什么呢?我认为用户表中的第二个条目是“user_id”,正如预期的那样?这个专栏一定要PK吗?由于本专栏将以 GUID 作为条目,是否适合使用 GUID 作为 PK?

最佳答案

在 userroles 表中,您需要先定义键,然后再将它们设置为外键。

public function up()
{
Schema::create('userroles', function(Blueprint $table)
{
$table->string('user_id');
$table->unsignedInteger('role_id');
$table->foreign('user_id')->references('user_id')->on('users');
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
$table->timestamps();
});
}

关于mysql - SQL中的主键长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29644035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com