php - Laravel 中的外键约束格式不正确
问题描述
我正在使用 Laravel 7 和 PHP 7.4。
我正在处理数据库,但当我尝试为另一个表中的用户生成外键时突然卡住了问题。它应该是直接的过程,我正在关注文档,但仍然出现错误。
一般错误:1005 无法创建表
carchain_qrcode
。sellers
(errno: 150 "外键约束格式不正确
用户表
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigInteger('id');
$table->string('name')->unique();
$table->string('email')->unique();
});
}
卖家表
public function up()
{
Schema::create('sellers', function (Blueprint $table) {
$table->bigInteger('id');
$table->unsignedBigInteger('user_id');
$table->string('seller_name');
$table->string('seller_email');
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
});
我哪里出错了?
解决方案
我认为问题在于您的users表的id是bigInteger而不是bigIncrements或unsignedBigInteger。
在 Laravel 7 中,您可以简单地执行以下操作:$table->id()来创建 id 列。
推荐阅读
- sql - 具有多列的单个总计 ROLLUP
- python - 正则表达式,用 NULL 替换所有数字,除了几个单词(单词可以有数字字符)
- npm - 一个包可以同时发布到 github 和 npm 吗?(使用单个 `npm publish`)
- reactjs - 使用 Redux 和 React Hooks,Flatlist 不会重新渲染,也不会重新渲染其中的单个组件
- python - 在 Python 中创建静态类
- php - 使用插值变量注入 JSON 字符串不起作用
- java - RESTful 服务 URL 中的分号截断它后面的字符
- web-scraping - 如何知道哪个公司保护网站?
- vue.js - Vue.js:@input 用于不使用 v-for
- javascript - 如何在面试中回答“Javascript 中的原型继承与经典继承有何不同”?