Laravel迁移不会添加整数类型的外键(mysql)
Laravel migration won't add foreign key with integer type (mysql)
我正在尝试添加一个引用引用 table 中整数主键的外键。 laravel 尝试创建 table 的方式有两个问题,第一个是如果我尝试显式输入外键列整数长度 11 以匹配它认为的参考列我想将此列作为主键吗?我收到错误:
"Incorrect table definition; there can only be one auto column and it must be defined as a key"
即使我将主键明确指定为 'id' 列,我也会收到此错误。这是我用来产生此错误的代码:
public function up()
{
Schema::create('ip_bans', function(Blueprint $table)
{
$table->increments('id');
$table->string('ip_address', 255);
$table->integer('ban_id', 11);
$table->primary('id');
$table->foreign('ban_id')->references('id')->on('user_bans')->onDelete('set null');
});
}
这是供参考的架构 table:
public function up()
{
Schema::create('user_bans', function(Blueprint $table)
{
$table->increments('id');
$table->string('reason');
$table->string('banned_user', 16);
$table->timestamps();
$table->timestamp('ban_end');
$table->foreign('banned_user')->references('username')->on('users')->onDelete('cascade');
});
}
如果我从外键列中删除显式整数长度 11,我将无法创建外键,因为列不匹配,因为列的长度是 11 并且参考列在 'user_bans' table 是 10。我在这里做错了什么或解决这个错误的方法吗?
你试过吗?
$table->integer('ban_id', 11)->unsigned;
Laravel - Foreign Keys(注意这部分下的粉色框)
我正在尝试添加一个引用引用 table 中整数主键的外键。 laravel 尝试创建 table 的方式有两个问题,第一个是如果我尝试显式输入外键列整数长度 11 以匹配它认为的参考列我想将此列作为主键吗?我收到错误:
"Incorrect table definition; there can only be one auto column and it must be defined as a key"
即使我将主键明确指定为 'id' 列,我也会收到此错误。这是我用来产生此错误的代码:
public function up()
{
Schema::create('ip_bans', function(Blueprint $table)
{
$table->increments('id');
$table->string('ip_address', 255);
$table->integer('ban_id', 11);
$table->primary('id');
$table->foreign('ban_id')->references('id')->on('user_bans')->onDelete('set null');
});
}
这是供参考的架构 table:
public function up()
{
Schema::create('user_bans', function(Blueprint $table)
{
$table->increments('id');
$table->string('reason');
$table->string('banned_user', 16);
$table->timestamps();
$table->timestamp('ban_end');
$table->foreign('banned_user')->references('username')->on('users')->onDelete('cascade');
});
}
如果我从外键列中删除显式整数长度 11,我将无法创建外键,因为列不匹配,因为列的长度是 11 并且参考列在 'user_bans' table 是 10。我在这里做错了什么或解决这个错误的方法吗?
你试过吗?
$table->integer('ban_id', 11)->unsigned;
Laravel - Foreign Keys(注意这部分下的粉色框)