使用Navicat 建表添加外键时出现error 105 报错

本文记录了解决使用Navicat创建Mysql数据库表时遇到的外键约束冲突问题,详细介绍了如何调整表结构设置以成功添加外键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在用Naviacat 建Mysql数据库的表时总是出现如下显示的错误提示:
错误提示 网上查了相关问题的描述跟解决办法后发现对于我这样刚学习的小白来说有点难以理解,在论坛上找到了一个链接,这是那个链接:
https://wenku.baidu.com/view/7a0a1f1b10a6f524ccbf85e6.html

照着上面的链接查找之后找出了问题所在,在此做一下记录,如果能帮到别人就更好了!

这是我建的表
表的结构
如图我要对typeId和userId添加外键
在创建表时,我在这两列的不是null上面勾选了,但是在上面的第一张表添加外键的最后两栏:删除时、更新时,我选择的时SET NULL 和CASCADE,此处的SET NULL与建表时字段勾选的不是null冲突了,将表的结构的typeId和userId的不是null取消勾选即可成功添加外键了,如下图:
取消不是null勾选

谢谢浏览!

### Navicat添加教程 在设置过程中,确保两个之间存在关联关系至关重要。对于希望在Navicat中实现这一功能的用户来说,理解具体操作流程有助于顺利完成任务。 #### 准备工作 确认主(即拥有主的关系)和从(即将要加入约束条件的关系)。例如,如果打算让`invoicing_record`成为依赖于`email`的存在,则需先保证`email`已定义好作为参照目标的主[^1]。 #### 创的具体步骤如下: 1. **打开设计视图** 启动Navicat并连接到相应的数据库实例之后,找到想要编辑结构的目标格——这里假设为`invoicing_record`。右击该名称选择“设计”选项进入可视化界面。 2. **指定列用于存储部引用** 在新窗口内定位至计划用来保存来自另一张记录ID的那一栏位;通常命名为类似于`<foreign_table>_id`的形式以便识别。本案例里就是指明`email_id`字段。 3. **配置约束** 选中上述选定的列后,在下方属性面板寻找名为“索引/”的部分点击旁边的按钮来开启更详细的设定对话框。此应能看到多个可用的操作项,请挑选其中标记为“Foreign Key... ”的一项继续前进。 4. **映射源与目的端点** 弹出的小窗格允许指定当前所处内的哪一列将充当本地代,并且指出远端伙伴对象及其内部相应唯一标识符的位置。按照提示完成配对过程即可形成有效的参照链路。 5. **验证数据类型匹配度** 务必仔细核对部链接两端的数据格式是否完全吻合,因为任何细微差异都有可能引发后续插入或更新动作失败的问题。比如整数型与其他数值类别间不兼容等情况均可能导致SQL错误码如1452的发生[^2]。 6. **测试连通性** 最后一步议执行一些简单的查询语句以检验新好的能否正常运作。尝试向子级单元新增几条含有合法父辈实体编号的新纪录,观察系统反应是否符合预期逻辑。 ```sql -- 插入一条新的发票记录,同指定其所属邮件ID INSERT INTO invoicing_record (email_id, amount) VALUES ((SELECT id FROM email WHERE subject='Test Email'), 99.99); ``` 通过以上指导可以较为顺利地掌握利用Navicat工具构关联的技术要点。值得注意的是实际应用场景下还需考虑更多细节因素,譬如性能优化策略、异常处理机制等方面的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值