我在laravel迁移方面遇到问题。我想在2个表之间设置一个关系。例如,我有表用户和表产品,在产品表中有user_owner列,因此我可以这样指定用户:
用户表
$table->bigIncrements('id');
产品表
$table->integer('user_owner');
$table->foreign('user_owner')->references('id')->on('users');
但是每次我要迁移此表时,都会出现类似以下错误:
SQLSTATE[HY000]: General error: 1005 Can't create table `ecomet_html`.`#sql-3c38_b9` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `products` add constraint `products_store_id_foreign` foreign key (`store_id`) references `stores` (`id`))
我为什么做错了?
答案 0 :(得分:0)
检查密钥格式!用户和产品的两个ID的长度不同。试试(产品表):$table->bigInteger('user_owner'); or $table->unsignedBigInteger('user_owner'); or $table->bigInteger('user_owner')->unsigned();
另一个建议是:$table->foreign('user_owner')->references('id')->on('users')->onDelete('cascade');
,数据库引擎可能需要onDelete参数
答案 1 :(得分:0)
尝试一下。
从以下位置更新您的user_owner:
$table->integer('user_owner');
收件人:
$table->unsignedBigInteger('user_owner');