Navicat报错150

150错误的常见原因如下,并且我以可能性的大小作了排序
已知的原因:
1, 两个字段的类型或者大小不严格匹配,例如,如果一个是INT(10), 那么外键也必须设置成INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令来查看字段的大小,因为一些查询浏览器有时候把 int(10) 和int(11) 都显示为integer。另外,你还必须确定两个字段是否一个为 SIGNED,而另一个又是UNSIGNED, 这两字段必须严格地一致匹配。
2, 你试图引用的其中一个外键没有建立起索引,或者不是一个primary key , 如果其中一个不是primary key 的放,你必须为它创建一个索引。
3, 外键的名字是一个已经存在的一个键值了,这个时候,你应该检查你的数据库以确保外健名字是唯一的,或者你在键名后面加上几个随机的字符以测试是否是这个原因。
4, 其中一个或者两个表是MyISAM引擎的表,若想要使用外键约束,必须是InnoDB引擎,(实际上,如果两个表都是MyISAM 引擎的,这个错误根本不会发生,但也不会产生外键),你可以通过查询浏览器来设置表的引擎类型
5, 你可能设置了ON DELETE SET NULL, 但是相关的键的字段又设置成了NOTS NULL 值。你可能通过修改cascade 的属性值或者把字段属性设置成 allow null 来搞定这个bug.
6, 请确定你的Charset 和 Collate 选项在表级和字段级上的一致
7, 你可能设置为外键设置了一个默认值,如 default=0
8, 在这个关系里面,其中的一个字段是一个混合键值中的一个,它没有自己独立的索引,这时,你必须为它创建一个独立的索引。
9, ALTER 声明中有语法错误
1、外键的引用类型不一样,主键是int外键是char
2、找不到主表中 引用的列
3、主键和外键的字符编码不一致
4.还有要建立外键的话,要先建立索引。没有建立索引也会出错。
我的问题解决方案是在sql后面加上了如下句话,ok!成功导入脚本
ENGINE=INNODB DEFAULT CHARSET=utf8;
charset对应的换成你的主键表的字符集!
在这里插入图片描述
我的报错原因就是第5点,我设置了外键,而这个外键是不为空的,但是我又设置了外键删除时的属性为SET NULL,因此会报错,直接改成其他属性就好啦

Navicat for MySQL是MySQL / MariaDB管理和开发的理想解决方案。它是一个单一应用程序,可让您同时连接到MySQL和MariaDB数据库。与Amazon RDS,Amazon Aurora,Oracle Cloud,Google Cloud和Microsoft Azure等云数据库兼容。这个全面的前端为数据库管理,开发和维护提供了直观而强大的图形界面。 数据传输,数据同步和结构同步可帮助您更轻松快捷地迁移数据,从而减少开销。提供详细的分步指南,以跨数据库传输数据。使用数据和结构同步来比较和同步数据库。在几秒钟内设置和部署比较,并获取详细的脚本以指定要执行的更改。 设置数据源连接后,可以使用“导入向导”将数据从多种格式或从ODBC传输到数据库中。将表格,视图或查询结果中的数据导出为Excel,Access,CSV等格式。使用类似于电子表格的网格视图以及一系列数据编辑工具来添加,修改和删除记录,以方便您进行编辑。Navicat为您提供有效管理数据并确保流程平稳所需的工具。 Visual SQL Builder将帮助您创建,编辑和运行SQL语句,而不必担心语法和命令的正确用法。通过获取关键字建议并从编码中去除重复内容,使用“代码完成”和可自定义的代码段快速进行编码。 使用我们专业的对象设计器创建,修改和管理所有数据库对象。使用复杂的数据库设计和建模工具将数据库转换为图形表示形式,以便您可以轻松地建模,创建和理解复杂的数据库。 我们的图表功能使您可以创建大型数据集的可视表示形式,并帮助您从数据中获得更深刻的见解。探索并发掘数据之间的模式,趋势和关系,并创建有效的视觉输出,以将您的发现显示在仪表板上以进行共享。 我们强大的本地备份/还原解决方案可指导您完成备份过程,并减少发生错误的可能性。为可重复部署的过程设置自动化,例如在特定时间或日期执行数据库备份和脚本执行。无论您身在何处,都可以随时完成工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值