You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel迁移报错:无法为两个字符串类型字段添加外键如何解决

问题根因

报错的核心原因是你在created_by、updated_by两个字符串类型字段上错误调用了unsigned()修饰方法:unsigned()是数字类型字段的专属修饰符,用于标记字段为无符号数值,不能作用于字符串类型,直接触发了SQL语法错误。

解决步骤

  1. 修改Lessons表迁移的字段定义,删除字符串字段后的unsigned()调用:
// 原错误代码
// $table->string('created_by')->unsigned();
// $table->string('updated_by')->unsigned();

// 修改后代码
$table->string('created_by');
$table->string('updated_by');
  1. 补充Admins表username字段的唯一约束(外键关联的父表字段必须具备唯一索引,否则关联会失败),修改Admins表迁移的username定义:
// 原代码
// $table->string('username');

// 修改后代码
$table->string('username')->unique();
  1. 确认迁移执行顺序:Admins表的迁移文件时间戳必须早于Lessons表的迁移文件时间戳,保证执行关联时父表admins已经创建完成。

修改完成后重新执行php artisan migrate即可。

内容的提问来源于stack exchange,提问作者Mhoreen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 03:15:02