我在向表添加MEDIUMINT外键约束时遇到麻烦。
我知道它有效,在 基本表 中,organization_id
还引用了MEDIUMINT。 FOREIGN TABLE 中的第一个外键有效,但是第二个无效。
我肯定知道的事情:
unsignedMediumInteger
; 我尝试过的事情:
$table->unsignedMediumInteger('customer_id');
更改为$table->mediumInteger('customer_id')->unsigned();
Schema::create('numberblocks')
分离到Schema::table('numberblocks')
; customer_id
更改为c_id
;和基本表
Schema::create('customers', function (Blueprint $table) {
$table->increments('id');
$table->unsignedMediumInteger('organization_id');
$table->unsignedMediumInteger('customer_id');
$table->string('customer_domain');
$table->timestamps();
// Foreign Keys
$table->foreign('organization_id')->references('id')->on('organizations');
});
外汇表
Schema::create('numberblocks', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('group_id')->index();
$table->unsignedMediumInteger('customer_id');
$table->unsignedMediumInteger('order_id');
$table->string('number', 15);
$table->timestamps();
// Foreign Keys
$table->foreign('group_id')->references('id')->on('groups');
$table->foreign('customer_id')->references('customer_id')->on('customers');
});
我尝试过的所有方法最终都会遇到相同的错误:
SQLSTATE[HY000]: General error: 1005 Can't create table 'db'.'#sql-1a78_2a6'
(errno: 150 "Foreign key constraint is incorrectly formed")
(SQL: alter table 'numberblocks' add constraint 'numberblocks_customer_id_foreign'
foreign key ('customer_id') references 'customers' ('customer_id'))```
我的问题: 还有其他人知道使此工作正常进行的方法吗?
答案 0 :(得分:0)
是的,正如错误所述
一般错误:1822无法添加外键约束。失踪 引用中约束“ numberblocks_customer_id_foreign”的索引 nced表'customers'“)
所以尝试添加
$table->index(['customer_id']);
在客户迁移中,将解决此问题
如果不是下面的友善评论