首页 文章

MYSQL外键Errno(150)无法创建表

提问于
浏览
0

我刚刚开始在大学学习MYSQL,我有一个重要的任务要为我的 class 做 . 我必须创建一个小型数据库,我似乎无法添加带有外键的表,因为errno(150)这就是我所拥有的 .

create table Country
(CountryName varchar (50) not null,
Primary Key (CountryName));

create table InterestGroup
(IntrestgrpName varchar (30) not null,
Primary Key (IntrestgrpName));

create table Organisation
(OrgName varchar (50) not null,
OrgAddress varchar (30),
OrgTelNo.varchar (30),
Primary Key (OrgName));

create table Qualification
(QualName varchar (50) not null,
Primary Key (QualName));

create table Member
(MemberID varchar (15) not null,
MemberName varchar (30),
MemberAdd varchar (50) not null,
CountryName varchar (50) not null,
IntrestgrpName varchar (30) not null,
QualName varchar (50) not null,
OrgName varchar (50) not null,
Primary Key (MemberID),
Foreign Key (CountryName) References Country (CountryName),
Foreign Key (IntrestgrpName) References InterestGroup (InterestgrpName),
Foreign Key (QualName) References Qualification (Qualname),
Foreign Key (OrgName) References Organisation (OrgName));

我似乎无法创建成员表,它给出了这个错误,ERROR 1005(HY000):无法创建表'iicp.member'(错误号:150)在此先感谢您的帮助,我真的需要解决这个

4 回答

  • 0

    这里是工作查询

    create table Country
    (CountryName varchar (50) not null,
    Primary Key (CountryName));
    
    create table InterestGroup
    (IntrestgrpName varchar (30) not null,
    Primary Key (IntrestgrpName));
    
    create table Organisation
    (OrgName varchar (50) not null,
    OrgAddress varchar (30),
    OrgTelNo varchar (30),
    Primary Key (OrgName));
    
    create table Qualification
    (QualName varchar (50) not null,
    Primary Key (QualName));
    
    create table Member
    (MemberID varchar (15) not null ,
    MemberName varchar (30),
    MemberAdd varchar (50) not null,
    CountryName varchar (50) not null,
    IntrestgrpName varchar (30) not null,
    QualName varchar (50) not null,
    OrgName varchar (50) not null,
    Primary Key (MemberID), 
    Foreign Key (CountryName) References Country (CountryName),
    Foreign Key (IntrestgrpName) References InterestGroup (IntrestgrpName),
    Foreign Key (QualName) References Qualification (Qualname),
    Foreign Key (OrgName) References Organisation (OrgName));
    

    DEMO HERE SQLFIDDLE

  • 0

    你的SQL是正确的 . 它对我有用,改变了以下变化:

    OrgTelNo.varchar (30) to OrgTelNo varchar (30)
    
  • 1
    SHOW ENGINE INNODB STATUS;
    
    
    ...
    
    ------------------------
    LATEST FOREIGN KEY ERROR
    ------------------------
    130211 15:09:26 Error in foreign key constraint of table test/member:
    Foreign Key (IntrestgrpName) References InterestGroup (InterestgrpName),
    Foreign Key (QualName) References Qualification (Qualname),
    Foreign Key (OrgName) References Organisation (OrgName)):
    Cannot resolve column name close to:
    ),
    Foreign Key (QualName) References Qualification (Qualname),
    Foreign Key (OrgName) References Organisation (OrgName))
    
    ...
    

    您在表 InterestGroup 中引用了名为 InterestgrpName 的列,但列的实际名称是 IntrestgrpName

    Foreign Key (IntrestgrpName) References InterestGroup (InterestgrpName),
    
    You have type error here -----------------------------------^
    
  • 2

    OrgTelNo.varchar (30),

    而不是这个,你应该写

    OrgTelNo varchar (30),

    而且在创建最后一个表成员时也是一个拼写错误 .

    FOREIGN KEY ( IntrestgrpName ) REFERENCES InterestGroup ( IntrestgrpName)
    

    试试这个 .

相关问题