首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel - errno: 150外键约束格式不正确

Laravel是一种流行的PHP开发框架,用于构建高效、可扩展的Web应用程序。它提供了丰富的功能和工具,使开发人员能够快速构建出优雅、简洁的代码。

errno: 150是MySQL数据库中的错误代码,表示外键约束格式不正确。外键约束是用于维护表之间关系的一种机制,它确保了数据的完整性和一致性。当创建外键约束时,需要确保参考表和被参考表的字段类型、长度、字符集等属性完全一致,否则会出现errno: 150错误。

在Laravel中,可以通过数据库迁移来创建和管理表以及它们之间的关系。当使用Laravel的迁移工具创建外键约束时,需要确保参考表和被参考表的字段类型、长度、字符集等属性一致。如果出现errno: 150错误,可以按照以下步骤进行排查和修复:

  1. 检查表的创建顺序:在创建外键约束之前,被参考的表必须先创建。确保迁移文件中被参考表的创建在前,参考表的创建在后。
  2. 检查字段类型和长度:确保参考表和被参考表的字段类型、长度一致。例如,如果参考表的字段是整数类型,被参考表的字段也必须是整数类型。
  3. 检查字符集和排序规则:确保参考表和被参考表的字符集和排序规则一致。可以在迁移文件中使用->charset('utf8')->collation('utf8_unicode_ci')指定字符集和排序规则。
  4. 检查字段名和索引:确保参考表和被参考表的字段名和索引一致。如果字段名或索引不一致,可以使用->references('id')->on('users')->onDelete('cascade')指定参考表和字段。
  5. 检查表引擎:确保参考表和被参考表使用相同的表引擎。可以在迁移文件中使用->engine('InnoDB')指定表引擎。

如果以上步骤都检查无误,仍然出现errno: 150错误,可以参考Laravel官方文档中关于外键约束的说明,或者在Laravel社区中寻求帮助。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议您访问腾讯云官方网站,查找与Laravel开发相关的云计算产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

laravel5.6中的约束示例

一张表是文章表articles,一张表是分类表categories,其中在文章表中有一个分类字段category_id,现在想在删除分类表中的某一分类时,该分类下的所有文章也一起被删除,那么这时候就可以用到外约束...具体用法如下: 给文章表添加约束 $table- unsignedInteger('category_id')- comment('文章所属分类|select'); $table- foreign...references('id')- on('categories')- onDelete('cascade'); 其中需要注意的是分类表categories中的主键字段id与文章表articles中的字段...category_id的数据类型或者是数据长度要保持一致,因为作为主键的id值是从1开始自增的,所以在被其绑定的字段的数据类型就不能使用integer,而要改用unsignedInteger 以上这篇...laravel5.6中的约束示例就是小编分享给大家的全部内容了,希望能给大家一个参考。

1.7K31

深入mysql关联问题的详解--Java学习网

今儿继续再看老师给推荐的深入浅出mysql数据库开发这本书,看到innodb数据库的关联问题时,遇到了一个问题,书上写的是可以对父表进行修改,从而同步到子表的上去,可是自己的实验却是没有能够。...然后自己又重新看了下书本,发现自己的sql语句中没有innodb的约束方式(cascade,set null,no action,restrict),感觉这就是自己出问题的地方。...150)-----我这里也建立索引了。...网上的说法是:字段类型和的索引 这里是重新建立一张表icity,结果可以了,总结可能是因为字段类型的问题,可是我的alter的问题还是没有解决呢: 代码如下: mysql> create...) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.02 sec) 在大家(老师和网友)的帮助下终于搞定了,做法先drop掉表里的

1K40

MySQL 学习笔记(三):完整性和触发器设计

添加约束 alter table 从表 add constraint 约束名(形如:FK_从表_主表) foreign key(属性名) references 主表(属性名) alter table...约束 + 级联(删除/更新) alter table 从表 add constraint 约束名 foreign key(属性名) references 主表(属性名)  ON DELETE CASCADE...删除约束 删除主键约束:alter table 表名 drop primary key; 删除外约束:alter table 表名 drop foreign key (区分大小写);.../school/student' (errno: 150 - Foreign key constraint is incorrectly formed) 查了下资料,发现 MySQL建立的字段必须和引用表的字段一模一样的类型...这里我创建的时候 sno 中有些表有主键约束,有些却没有,所以当我删除主键约束的时候它会提示被错误建立起来了。但我不明白为什么建立的时候没有报错。

1.4K40

MySQL无法创建表的问题分析(r12笔记第73天)

ERROR 1005 (HY000): Can't create table 'xxx.QRTZ_JOB_DETAILS' (errno: 150) 这个create table的语句是什么样,是不是有什么特别之处呢...: 150) 而一个临时的解决方法就是创建了一个小写的表,创建过程是没有问题的,但是开发同学那边是没法推进了,因为他们的应用程序端是第三方的Quarz的调度项目,他们识别是按照大写的格式来的。...有的同学可能说,那可能是导致的,我查了一圈部署的脚本,里面连一个REFERENCE的影子都找不到,部署的脚本里压根就没有的字眼。...是指向了QRTZ_JOB_DETAILS,而实际上脚本里面没有任何的信息,那只有一个可能,那就是QRTZ_JOB_LISTENERS不在这个脚本中,很可能是在这次部署之外就创建好的。...,先删除,再创建的过程中就会因为依赖关系的原因而失败。

1.6K70

还得再来聊聊Laravel中的对多对模型的一些事

前言 之前,在文章:https://www.misiyu.cn/article/58.html 已经发过关于Laravel中的多对多关系了。 但回过头来,过了个把月再去看,我自己都忘了怎么写了。...确实看laravel的中文文档,看得糊里糊涂的。还是得在实践中理解啊。 情景假设 我有一张来源表(referers)来记录href和网页标题title。...我想说的重点是: 1、来源表和信息表可以没有任何约束,意思就是说各建各的,不用考虑什么的。 2、这两表没有任何关联,如果还要产生关系,那么就要第三张表来帮他们建立联系。...重点是第三张表,第三张表最少需要2个字段:即两张表的 ? 注意: 1、你想要有其他字段也行,我们这里讨论最简单的情况。 2、第三张表的命名有要求,主要是Laravel默认情况的关系。

1.6K00

3分钟短文:书接上回,Laravel数据库迁移的那些个小技巧

引言 使用laravel的数据库迁移功能进行表的创建,和迁移回滚之后,我们继续说说在设计中 表结构的更改之后的处理。以及如何为数据库填充一些伪数据作为测试。...[图片] 数据约束 上一章说到数据库迁移回滚,可以手动控制回滚到哪一批次的迁移位置。...我们需要空与非空约束,默认值约束,主键约束约束等等数据库所具有的特性, 这才是关系型数据库的魅力。...大家应该不陌生SQL语句追加字段的语法: ALTER TABLE contacts ADD last_name varchar(40) NOT NULL AFTER contact_id; laravel...写在最后 本文是对上一章所述laravel数据库迁移功能的补充。数据库迁移是一个比较大的动作, 特别是已经上线生产的应用数据库,如果非到更新迁移的地步不可,需要预期做好演练, 以应对可能的突发事故。

1.7K30

Oralce的二维表操作

Oralce的二维表操作 –创建表并同时添加约束 –主键约束 –非空约束 –检查约束 –唯一约束约束 –简单的表创建和字段类型 –简单的创建语句: create table student...table 表名 drop constraints 唯一约束名; –二维表创建 约束学习: –创建学生表 create table student( sno number(10) primary...–概念:当一张表的某个字段的值需要依赖另外一张表的某个字段的值,则使用约束。 –其中主动依赖的表称为子表,被依赖的表称为父表。加在子表中。...alter table 表名 drop constraints 约束名 –选取: –一般选取父表的主键作为子表的。...–的缺点: –无法直接删除父表数据,除非级联删除 –级联删除:在添加约束时,使用关键字 on delete cascade –使用:当删除父表数据时,自动删除子表相关所有数据。

63920

MySQL约束

解决方法: 使用约束 7.4、什么是约束 一张表的一个字段受限于另外一张表的一个字段对应的值。这里涉及到两张表:被引用的表叫主表(父表),另外一张叫从表(子表)。...**子表:**定义了的表,的取值要么取父表中字段对应的值,要么取NULL值,严重受限于父表 **父表:**被引用的字段要具有唯一性(绝大多数都是用的父表的主键) 八、约束 8.1、约束格式...格式一: [constraint][约束名称] foreign key(字段名) references 主表名称(主键字段名); #在create table时设置 案例: 创建一个班级表...: alter table 从表名称 add [constraint][约束名称] foreign key(字段名) references 主表名称(主键字段名); #建好表后修改 案例: 创建一个学生表...格式: alter table 从表 drop foreign key 约束名称; 案例: 删除stu1中的外表关联 mysql> alter table stu1 drop foreign key

6.5K10

【MySQL】04_约束

因为被依赖/被参考的值必须是唯一的 在创建约束时,如果不给约束命名,默认名不是列名,而是自动产生一个键名(例如student_ibfk_1;),也可以指定约束名。...,然后才可以删除主表的数据 在“从表”中指定约束,并且一个表可以建立多个约束 从表的列与主表被参照的列名字可以不相同,但是数据类型必须一样,逻辑意义一致。...如果类型不一样,创建子表时,就会出现错误“ERROR 1005 (HY000): Can't create table'database.tablename'(errno: 150)”。...当创建约束时,系统默认会在所在的列上建立对应的普通索引。但是索引名是约束名。...那么建和不建约束不影响查询语句执行 阿里开发规范 【 强制 】不得使用与级联,一切概念必须在应用层解决。

2.4K20

建议收藏备查!MySQL 常见错误代码说明

2.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 问题分析:密码不正确或者没有权限访问...Replicate_Wild_Ignore_Table: Last_Errno: 1032 Last_Error: Could not execute Update_rows...MySQL常见错误代码说明: 130 :文件格式不正确。...提交事务失败 1181:回滚事务失败 1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库 1205:加锁超时 1211:当前用户没有创建用户的权限 1216:约束检查失败...,更新子表记录失败 1217:约束检查失败,删除或修改主表记录失败 1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器 1227:权限不足,您无权进行此操作 1235:MySQL

2.3K50

Oracle 数据库学习笔记 (二)

二、表的相关操作 2.1 创建表 2.2 插入数据 insert 2.3 表创建(约束) 2.3.1 主键约束 2.3.2 非空约束 2.3.3 唯一约束 2.3.4 检查约束 2.3.5 约束 2.3.6...约束 在两张表中进行约束操作,这就要区别一下父表和子表的区别啦,父表的 ID 可以对 子表的 ID 具有约束租用 2.3.1 主键约束 关键字:primary key 主键约束可以确认每一行数据的唯一性...constraint xxx; -- 暂时禁用 alter table xxx drop constraint xxx; -- 永久删除 2.3.5 约束 创建表时设置约束 在修改表时添加约束...删除外约束 关键字: foreign key REFERENCES 主-约束是针对两张表的约束 有一张表 TA ,且表有主键,另外一张表中的某一列的数据完全取自于 TA,此时就 TB 表中该列为列...,添加主外约束来限制它 (TB 列上添加) 是不是有点绕口,我换个说法给大家 有两张表 A和B,A 表中的主键记为 AId,表B 的主键记为 BID,表 B 的 BID 加一个 ,引入 AId

89721
领券