[MySQL]ITeye - 娱乐之横扫全球

[MySQL]ITeye

2019年04月04日14时24分55秒 | 作者: 夏之 | 标签: 一个,或许,这个 | 浏览: 2560

当你企图在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. 要衔接的两个表的编码格局不同

我这边遇到的问题主要是界说的类型不匹配的问题

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表娱乐之横扫全球立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    [MySQL]ITeye

    一个,或许,这个
  • 2

    hdfs常用命令ITeye

    文件,目录,途径
  • 3

    orace11gR2 启用日志归档ITeye

    备份,数据库,需求
  • 4

    Mysql高可用架构ITeye

    可用,架构,计划
  • 5

    hbase 全体介绍ITeye

    存储,经过,文章
  • 6

    db2move 指令无法导出表ITeye

    导出,数据,字符
  • 7
  • 8
  • 9
  • 10