database - Laravel 5.7 迁移 - 如何在可为空的外键上删除级联
问题描述
我有一个表,其中包含一个必须可以为空的外键。但是,它说它的格式不正确。这是我的迁移:
Schema::create('menu_links', function (Blueprint $table) {
$table->increments('id');
$table->integer('parent_id')->nullable();
$table->integer('order')->default(0);
$table->timestamps();
$table->foreign('parent_id')->references('id')->on('menu_links')->onDelete('cascade');
});
尝试迁移时,出现以下错误:
(errno: 150 "Foreign key constraint is incorrectly formed")
我怎样才能绕过它?提前致谢!
解决方案
Schema::create('menu_links', function (Blueprint $table) {
$table->increments('id');
$table->integer('parent_id')->unsigned();
$table->integer('order')->default(0);
$table->foreign('parent_id')->references('id')->on('menu_links')->onDelete('cascade');
$table->timestamps();
});
由于 increments() 创建了一个无符号整数列,您还需要将外键列定义为无符号整数:
阅读:外键约束
推荐阅读
- airflow - 气流 HdfsSensor 未检测到
- javascript - 使用特定的 CSS (clipboard.js) 将表格复制并粘贴到 MS Word
- hibernate - 查询多对多连接表时出现Jpa休眠问题
- javascript - 在一个页面上使用多个 Slick 幻灯片
- reactjs - 道具类型失败:提供给“组”的“函数”类型的无效道具“元素”,应为“对象”
- python - 在heroku中没有收到电报验证码
- javascript - Next.js 访问 getServerSideProps 方法内的 Page props
- amazon-web-services - 使用 AWS Athena 创建指向 S3 存储桶中多个子文件夹的表
- latex - 在编译为 PDF 和 HTML 的 R markdown 文件中使用高级引用命令(例如,citetitle、citeauthor、来自 biblatex/natbib 的 footcite)
- javascript - 计算在由 javascript 动态创建的 HTML 字段中不起作用