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

SQLSTATE[HY000]:一般错误: 1005无法创建表` constraint `.`users`(错误号: 150“外键约束的格式不正确”) Laravel 7

SQLSTATE[HY000]:一般错误: 1005无法创建表constraint.users(错误号: 150“外键约束的格式不正确”)是一个数据库错误,通常在使用Laravel 7时出现。该错误表示在创建数据库表时,外键约束的格式不正确,导致无法创建表。

外键约束是用于维护表之间关系的一种机制。在创建外键约束时,需要确保参考表和被参考表的字段类型、长度、字符集等属性一致。如果不一致,就会出现上述错误。

解决这个错误的方法有以下几种:

  1. 检查表之间的关系:首先,检查涉及到的表之间的关系,确保外键约束的定义正确。确保参考表和被参考表的字段类型、长度、字符集等属性一致。
  2. 检查字段定义:检查涉及到的字段定义,确保字段类型、长度、字符集等属性一致。如果有不一致的地方,需要进行调整。
  3. 检查表的创建顺序:如果涉及到多个表之间的关系,确保创建表的顺序正确。即先创建被参考表,再创建参考表。
  4. 检查数据库引擎:确保使用的数据库引擎支持外键约束。一些数据库引擎默认是不支持外键约束的,需要手动设置。
  5. 检查数据库版本:确保使用的数据库版本符合Laravel 7的要求。有些旧版本的数据库可能不支持某些特性,导致出现错误。

总结起来,SQLSTATE[HY000]:一般错误: 1005无法创建表constraint.users(错误号: 150“外键约束的格式不正确”)是一个数据库错误,通常在使用Laravel 7时出现。解决这个错误的方法包括检查表之间的关系、字段定义、表的创建顺序、数据库引擎和数据库版本等方面。

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

相关·内容

MYSQL ERROR CODE 错误编号意义

mysql error code(备忘) 转1005创建失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败...1211:当前用户没有创建用户权限 1216:约束检查失败,更新子表记录失败 1217:约束检查失败,删除或修改主表记录失败 1226:当前用户使用资源已超过所允许资源,请重启数据库或重启服务器...错误:1239 SQLSTATE: 42000 (ER_WRONG_FK_DEF) 消息:对于 ’%s’: %s, 定义不正确。...错误:1451 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED_2) 消息:不能删除或更新父行,约束失败(%s)。...错误:1452 SQLSTATE: 23000 (ER_NO_REFERENCED_ROW_2) 消息:不能添加或更新子行,约束失败(%s)。

2.7K20
  • MySQL无法创建问题分析(r12笔记第73天)

    ERROR 1005 (HY000): Can't create table 'xxx.QRTZ_JOB_DETAILS' (errno: 150) 这个create table语句是什么样,是不是有什么特别之处呢...' (errno: 150) 而一个临时解决方法就是创建了一个小写创建过程是没有问题,但是开发同学那边是没法推进了,因为他们应用程序端是第三方Quarz调度项目,他们识别是按照大写格式...有的同学可能说,那可能是导致,我查了一圈部署脚本,里面连一个REFERENCE影子都找不到,部署脚本里压根就没有字眼。...,先删除,再创建过程中就会因为依赖关系原因而失败。...这里就不得不提到navicat这个工具神助攻,因为正常来说删除一个,如果存在外引用是肯定删不掉,会有下面的错误

    1.6K70

    Laravel 框架基于自带用户系统实现登录注册及错误处理功能分析

    本文实例讲述了Laravel 框架基于自带用户系统实现登录注册及错误处理功能。分享给大家供大家参考,具体如下: 一、默认 Laravel 不会自动帮你装上用户系统, ?...当在注册页面点击注册时,一般会报如下错误,如果你没动过任何配置的话, SQLSTATE[HY000] [1045] Access denied for user ‘homestead’@’localhost...以上修改后,注册还是报错 SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘fyp.users’ doesn’t exist (SQL.../migrations 目录下看到两个文件,这两个文件可以创建 users ,执行命令 php artisan migrate 然后打开数据库,可以看到增加了三个新 users、migratiolns...2)可以自己手动创建 users 在数据库中添加如下: create table users(id serial, email varchar(50), password varchar(255)

    1.6K20

    MySQL 8.0有趣新特性:CHECK约束

    ENFORCED时,约束创建且生效 当指定为: NOT ENFORCED时,约束创建但未生效 一个CHECK约束可以被指定为约束或列约束 约束不会出现在列定义内,可以引用任意多个或一个列,且允许引用后续定义表列...(c1 > c3) ); 以上示例包含了列约束约束,命名和未命名格式: 第一个约束是一个不包含在任何列定义内约束,所以允许引用任意列,且引用了后续定义列,同时没有给出约束名称,所以MySQL...(例外:一个临时可能使用与非临时一样约束名称) CHECK条件表达式必须遵守以下规则,如果包含不允许结构,将会触发错误: 非生成列和生成列允许被添加到表达式,但包含AUTO_INCREMENT...:ON UPDATE, ON DELETE被禁止在包含CHECK约束列使用,相应,CHECK约束也被禁止在使用参考动作列使用 CHECK约束在插入、更新、替换(REPLACE)和LOAD DATA...,在提前数据库前检查 一般,选择不同方式原则如下: 如果CHECK约束可以实现,且约束比较稳定,一般用CHECK约束实现,比如:年龄不允许为负数,不允许>150等,比如: CREATE TABLE

    1.1K30

    技术译文 | MySQL 8 中检查约束使用

    如果任何行搜索条件结果为 FALSE,则约束可能返回错误(但如果结果为 UNKNOWN 或 TRUE,则约束不会返回错误)。...要牢记使用规则: AUTO_INCREMENT 自增列不允许使用 引用另一个另一列不允许使用 存储函数和用户定义函数不允许使用 存储过程和函数参数不允许使用 子查询不允许使用 在外中用于后续操作...对于这些语句,如果约束评估结果为 FALSE,则会发生警告。插入或更新被跳过。 看一些例子 我创建了下表来测试此功能。...当且仅当指定条件评估为 TRUE 或 UNKNOWN(对于 NULL 列值)时,才满足 CHECK 监测约束,否则违反约束。 让我们从前面的逻辑中看一个例子。...,但是根据我以前作为程序员经验,我不建议在中添加逻辑,因为除非您无法访问应用程序代码,否则很难找到或调试错误

    1.1K20

    MySQL实战七:你不知道约束使用!

    如果你创建时候加上了check约束也是不起作用。所以,你不用更改或删除之前check约束。...2.2 2.2.1 创建 (1)不带别名,数据库自动生成 首先创建department: CREATE TABLE department ( dept_name varchar...,用来设置当主键被参考列数据发生变化时,中响应字段变换规则。...学习 cascade 表示级联操作,就是说,如果主键中被参考字段更新,(子表)中也更新,主键(父)中记录被删除,(子表)中改行也相应删除。...而on update只能删除子表数据,不能删除父主键数据,只能更新父主键,同时父子表数据都会被更新,但是在子表上做更新操作无效。

    4.3K20

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

    今儿继续再看老师给推荐深入浅出mysql数据库开发这本书,看到innodb数据库关联问题时,遇到了一个问题,书上写是可以对父进行修改,从而同步到子表上去,可是自己实验却是没有能够。...然后自己又重新看了下书本,发现自己sql语句中没有innodb约束方式(cascade,set null,no action,restrict),感觉这就是自己出问题地方。...`) REFERENCES `country` (`country_id`) ON UPDATE CASCADE; ERROR 1005 (HY000): Can't create table '....网上说法是:字段类型和索引 这里是重新建立一张icity,结果可以了,总结可能是因为字段类型问题,可是我alter问题还是没有解决呢: 代码如下: mysql> create...,做法先drop掉表里,然后在add。

    1K40

    第13章_约束

    ,需要先删除从中依赖该记录数据,然后才可以删除主表数据 (6)在 “从” 中指定约束,并且一个可以建立多个约束7)从列与主表被参照列名字可以不相同,但是数据类型必须一样,...如果类型不一样,创建子表时,就会出现错误 “ERROR 1005 (HY000): Can’t create table’database.tablename’(errno: 150)”。 ​...(8)当创建约束时,系统默认会在所在列上建立对应普通索引。但是索引名是约束名。...(2)删除时,先删除从emp,再删除主表dept (2)建一般情况下,关联都是提前设计好了,因此,会在创建时候就把约束定义好。...MySQL 支持多种存储引擎,每一个都可以指定一个不同存储引擎,需要注意是:约束是用来保证数据参照完整性,如果之间需要关联,却指定了不同存储引擎,那么这些之间是不能创建约束

    36530

    第04期:列 CHECK 约束

    3)不拒绝任何输入,定期处理不规范数据 这样会导致录入数据量非常大,存在很多无用不规范数据,一般选择非业务高峰时段定期处理不规范数据。 这两种就不举例子了,和第一种类似的处理方法。...二、CHECK 约束 现在要说是在列这一层次过滤基于定义之前就规范好 CHECK 约束。...7. 动作(比如 ON UPDATE, ON DELETE) 不适用。 8. enforced 默认启用,如果单独加上 not enforced ,check 约束失效。...示例 2 结合以上看看刚才那两张实际例子,check 约束仅仅对表 f1 生效。...约束tb_f1_r1_nonzero、tb_f1_r1r2_chk1、tb_f1_r1r3_chk 不跟随固定列,对全局有效,也可以说基于 check 约束。 2.

    62360

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

    cascade, /*定义Cno为参考course主键Cno,并且实现级联删除SC中相应元组 */ );  2....添加约束 alter table 从 add constraint 约束名(形如:FK_从_主表) foreign key(属性名) references 主表(属性名) alter table...添加多个约束,情况如何? 这里我删除约束时候报错了:ERROR 1025 (HY000): Error on rename of './school/#sql-1f2_7' to '..../school/student' (errno: 150 - Foreign key constraint is incorrectly formed) 查了下资料,发现 MySQL建立字段必须和引用字段一模一样类型...这里我创建时候 sno 中有些有主键约束,有些却没有,所以当我删除主键约束时候它会提示错误建立起来了。但我不明白为什么建立时候没有报错。

    1.5K40

    db2 terminate作用_db2 truncate table immediate

    225D7 分解 XML 文档时遇到了一个根元素,该根元素不是 XML 模式中复杂类型全局元素。225DE 无法启用 XML 模式以进行分解。 类代码 23 约束违例 18....23503 插入或更新值无效。23504 NO ACTION 更新或删除规则防止父被更新或删除。23505 发生由唯一索引或唯一约束强加约束违例。...23513 INSERT 或 UPDATE 结果行不符合检查约束定义。23514 检查数据处理中发现约束违例。23515 未能创建唯一索引,或者不能添加唯一约束,因为该包含指定重复值。...23520 不能定义,因为其所有的值都不同于父。23521 对目录更新违反了内部约束。23522 标识列值范围或者序列用完。23523 已经为安全标号列提供了无效值。...428B2 容器路径名无效。 428B3 指定了无效 SQLSTATE。 428B7 在 SQL 语句中指定编号不在有效范围内。 428BO 不能为联合数据源创建方案。

    7.6K20

    【MySQL】04_约束

    如果类型不一样,创建子表时,就会出现错误“ERROR 1005 (HY000): Can't create table'database.tablename'(errno: 150)”。...当创建约束时,系统默认会在所在列上建立对应普通索引。但是索引名是约束名。...(2)删除时,先删除从emp,再删除主表dept 建一般情况下,关联都是提前设计好了,因此,会在创建时候就把约束定义好。...#格式: ALTER TABLE 从名 ADD [CONSTRAINT 约束名] FOREIGN KEY (从字段) REFERENCES 主表名(被引用 字段) [on update xx][on...不一定要建约束约束,你操作(创建、删除、添加、修改、删除)会受到限制,从语法层面受到限制。

    2.4K20

    MySQL基础及原理

    (被参考/依赖值必须时唯一) 在创建约束时,如果没给约束名,默认名不是列名,而是自动产生一个键名。 在CREAT创建时就指定约束的话,先创建主表,再创建。...约束时在从中指定,并且一个可以建立多个约束。 从列与主表被参考列名可以不相同,但数据类型必须相同,逻辑意义必须一致。如果类型不一致,创建子表时就会报错。...(2)删除时,先删除从emp,再删除主表dept 建后添加: 一般情况下,关联都是提前设计好了,因此,会在创建时候就把约束定义好。...答:MySQL支持多种存储引擎,每一个都可以指定一个不同存储引擎,需要注意是:约束是用来保证数据参照完整性,如果之间需要关联,却指定了不同存储引擎,那么这些之间是不能创建约束...则报sqlstate_value为'HY000'错误,从而使得添加失败。

    3.8K20

    MySQL进阶

    这是给博主最大支持。以后博主会更新大量优质作品!!!! 一、约束 1.约束 约束概念 让之间产生关系,从而保证数据准确性!...建时添加约束 为什么要有约束 -- 创建db2数据库 CREATE DATABASE db2; -- 使用db2数据库 USE db2; -- 创建user用户 CREATE TABLE...DELETE FROM USER WHERE NAME='王五'; -- 所以我们需要添加约束,让两张产生关系 约束格式 CONSTRAINT 键名 FOREIGN KEY (本列名...无法删除 DELETE FROM USER WHERE NAME='王五'; 删除外约束 -- 标准语法 ALTER TABLE 名 DROP FOREIGN KEY 键名; -- 删除外 ALTER...ALTER TABLE 名 ADD CONSTRAINT 键名 FOREIGN KEY (本列名) REFERENCES 主表名(主键列名) ON DELETE CASCADE; -- 添加约束

    87420

    MySQL约束

    约束是按照约定(特定)条件限制,管束等意思。约束作用是添加、删除。 在数据库中对表中数据进行限制,保证数据正确性、有效性和完整性。一个如果添加了约束不正确数据将无法插入到中。...1.2、约束作用 对表中数据进行限制,保证数据正确性、有效性和完整性。一个如果添加了约束不正确数据将无法插入到中。约束创建时候添加比较合适。...**子表:**定义了取值要么取父中字段对应值,要么取NULL值,严重受限于父 **父:**被引用字段要具有唯一性(绝大多数都是用主键) 八、约束 8.1、约束格式...格式一: [constraint][约束名称] foreign key(字段名) references 主表名称(主键字段名); #在create table时设置 案例: 创建一个班级...: alter table 从名称 add [constraint][约束名称] foreign key(字段名) references 主表名称(主键字段名); #建好后修改 案例: 创建一个学生

    6.6K10

    Oracle创建空间和「建议收藏」

    study中创建数据格式: create table 数据名 oracle命令建立主键 1、创建一张学生 create table t_stu(...创建约束则使用如下命令: 语法格式:alter table命令 alter table 名 add constraint 约束约束内容。...② 创建一个主键约束。 ③ 与 ④ ⑤ ⑥ ⑦一起创建各种check约束。其中⑦是唯一约束,表示该列值是唯一,列中值不能重复。 Oracle中创建约束与SQL Server相同。...② Oracle中约束定义。 注意:名,字段名要大写!...删除数据 利用drop table命令删除数据 有时,由于某些约束存在,例如,当前主键被其他用作,会导致无法成功删除。

    5.7K20

    Mysql基础7-约束

    3819 (HY000): Check constraint 'stu_table_chk_1' is violated.   ...  1、什么是 首先中一个字段 是两张之间纽带 设置称之为子表,对应称之为父   2、介绍     说明1:《学生》和《辅导员》表示两张相互独立...是约束关键字     说明4:references 后面跟上父和父中字段   4、需求:给studentteacher_id设置为teacher,并且对应id字段数据 mysql...default:父有变更时,子表将列设置成一个默认值(Innodb不支持)   6、重新创建《student》和《teacher》并添加 mysql> select * from student...,子表中对应数据也会变成了null 五、删除外约束   1、删除外语法 alter table 名 drop foreign key 键名称; mysql> alter table student

    33540
    领券