찾다
데이터 베이스MySQL 튜토리얼解析MySQL创建外键关联错误

Mysql外键

bitsCN.com

当你试图在mysql中创建一个外键的时候,这个出错会经常发生,这是非常令人沮丧的。像这种不能创建一个.frm 文件的报错好像暗示着操作系统的文件的权限错误或者其它原因,但实际上,这些都不是的,事实上,这个mysql报错已经被报告是一个mysql本身的bug并出现在mysql 开发者列表当中很多年了,然而这似乎又是一种误导。

在很多实例中,这种错误的发生都是因为mysql一直以来都不能很好的支持的关系的问题, 更不幸的是它也并没有指明到底是哪一个问题会导致上面那种错误,下面我把导致这个可怕 的150错误的常见原因列出来了,并且我以可能性的大小作了排序

已知的原因:

1, 两个字段的类型或者大小不严格匹配,例如,如果一个是INT(10), 那么外键也必须设置成INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令来查看字段的大小,因为一些查询浏览器有时候把 int(10) 和int(11) 都显示为integer。另外,你还必须确定两个字段是否一个为 SIGNED,而另一个又是UNSIGNED, 这两字段必须严格地一致匹配,更多关于signed 和 unsigned 的信息,请参阅:http://www.verysimple.com/blog/?p=57

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 声明中有语法错误

10. 要连接的两个表的编码格式不同

bitsCN.com
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
世界上的三大操作系统是什么世界上的三大操作系统是什么Aug 22, 2022 pm 04:24 PM

三大操作系统:1、windows,是微软公司以图形用户界面为基础研发的操作系统,主要运用于计算机、智能手机等设备。2、macOS,是一套由苹果开发的运行于Macintosh系列电脑上的操作系统,是基于XNU混合内核的图形化操作系统。3、linux,是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。

vivo手机是什么系统vivo手机是什么系统Jul 04, 2022 am 11:10 AM

vivo手机是“Funtouch OS”和“OriginOS”系统;2020年11月18日之前,vivo手机搭载的都是“Funtouch OS”系统,2020年11月18日“OriginOS”操作系统发布之后,vivo手机搭载的就是“OriginOS”操作系统了,首款搭载该系统的是“vivo X60”系列手机。

windows操作系统的特点包括什么windows操作系统的特点包括什么Sep 28, 2020 pm 12:02 PM

windows操作系统的特点包括:1、图形界面;直观高效的面向对象的图形用户界面,易学易用。2、多任务;允许用户同时运行多个应用程序,或在一个程序中同时做几件事情。3、即插即用。4、出色的多媒体功能。5、对内存的自动化管理。

什么是闭环控制系统什么是闭环控制系统Jul 04, 2022 pm 04:18 PM

闭环控制系统是控制系统的一种类型,能够把系统输出量的一部分或全部通过一定方法和装置反送回系统的输出端,再将反馈信息与原输入信息进行比较,将比较的结果施加于系统进行控制,避免系统偏离预定目标。

什么是操作系统?它的作用是什么?什么是操作系统?它的作用是什么?Dec 07, 2020 pm 03:04 PM

操作系统是管理计算机硬件与软件资源的计算机程序,是控制和管理计算机软硬件资源,以尽量合理有效的方法组织多个用户共享多种资源的程序集合。操作系统的作用:1、管理系统中的各种资源;2、为用户提供良好的界面。从计算机用户的角度来说,操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;从设计人员的角度来说,就是指各式各样模块和单元之间的联系。

电脑开机快慢和什么有关电脑开机快慢和什么有关Aug 12, 2022 am 10:47 AM

影响电脑开机快慢的因素:1、操作系统;如果操作系统太过庞大,开机要加载的文件、服务、软件过多就会让开机速度变慢。2、硬件;硬件对于开机的影响主要是CPU、内存容量和硬盘速度,主板中预存的引导程序会引导CPU通过主板从硬盘中调用启动系统的数据,然后在内存空间内运行,因而CPU、内存大小和硬盘直接影响电脑开机的速度。3、加载项;加载项越多,硬盘要加载的东西就越多,开机速度就越慢。

系统软件中最重要的软件是什么?系统软件中最重要的软件是什么?Dec 10, 2020 pm 04:56 PM

系统软件中最重要的软件是“操作系统”。在计算机中,操作系统是其最基本也是最为重要的基础性系统软件;操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。

windows boot manager 无法进入系统怎么办windows boot manager 无法进入系统怎么办Nov 13, 2022 pm 02:06 PM

windows boot manager无法进入系统的解决办法:1、开机按DEL键;2、进BIOS设置光盘或U盘引导电脑进WinPE;3、使用Diskgenius重建主引导记录,并重启电脑;4、重装操作系统。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경