【问题标题】:ERROR 1064 (42000) && ERROR 1005 (HY000): Can't create table Contact_Info_Tbl (errno: 150)错误 1064 (42000) && 错误 1005 (HY000): 无法创建表 Contact_Info_Tbl (errno: 150)
【发布时间】:2014-05-20 16:27:09
【问题描述】:

我在创建表时收到这些错误,当我取出外键时它们会起作用。我对构建数据库比较陌生,所以我可能会遗漏一些简单的东西

Create Table IF NOT EXISTS Classroom_Address_Mailing_Tbl (
ID int auto_increment primary key,                       
Street_Address varchar (25),
City varchar (25),
State_Abbr varchar (2),
Zipcode varchar (10)
);


Create Table IF NOT EXISTS Classroom_Address_Physical_Tbl (
ID int auto_increment primary key,
Street_Address varchar (25),
City varchar (25),
State_Abbr varchar (2),
Zipcode varchar (10) 
);

Create Table IF NOT EXISTS Classroom_Info_Tbl (
ID int auto_increment primary key,
School_Name varchar (25),
Classroom_Name_Offical varchar (25),
Classroom_URL varchar (25),
Classroom_Address_Physical_ID int,
Classroom_Address_Mailing_ID int,
foreign key (Classroom_Address_Mailing_ID) references 
Classroom_Address_Mailing_Tbl (ID) on delete cascade,
foreign key (Classroom_Address_Physical_ID) references 
Classroom_Address_Physical_Tbl (ID) on delete cascade,
);


Create Table IF NOT EXISTS Contact_Info_Tbl (
Classroom_ID int,
Contact_Name varchar (20),
Contact_Title varchar (20),
Contact_Email varchar (20),
Contact_Phone varchar (20),
foreign key (Classroom_ID) references 
Classroom_Info_Tbl (ID) on delete cascade
);

这些是我得到的错误:

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 7 行的 ')' 附近使用正确的语法

错误 1005 (HY000): 无法创建表 'neClassCertForm.Contact_Info_Tbl' (errno: 150)

【问题讨论】:

  • 在不存在 IF NOT EXISTS 的情况下尝试。
  • @AbhikChakraborty 仍然没有,我在另一个线程中读到,使用 cmets 可能会产生一些影响(我不知道为什么),但我有一个注释掉的标题和更多表格。

标签: mysql mysql-error-1064 mysql-error-1005


【解决方案1】:

好的,问题是创建表中的逗号

Classroom_Address_Physical_Tbl (ID) on delete cascade,

这破坏了表的创建。还要添加 ENGINE=innodb 以强制执行外键约束。

Create Table IF NOT EXISTS `Classroom_Address_Mailing_Tbl` (
ID int auto_increment primary key,                       
Street_Address varchar (25),
City varchar (25),
State_Abbr varchar (2),
Zipcode varchar (10)
)ENGINE=InnoDB;


Create Table IF NOT EXISTS `Classroom_Address_Physical_Tbl` (
ID int auto_increment primary key,
Street_Address varchar (25),
City varchar (25),
State_Abbr varchar (2),
Zipcode varchar (10) 
)ENGINE=InnoDB;

Create Table IF NOT EXISTS `Classroom_Info_Tbl` (
ID int auto_increment primary key,
School_Name varchar (25),
Classroom_Name_Offical varchar (25),
Classroom_URL varchar (25),
Classroom_Address_Physical_ID int,
Classroom_Address_Mailing_ID int,
foreign key (Classroom_Address_Mailing_ID) references 
Classroom_Address_Mailing_Tbl (ID) on delete cascade,
foreign key (Classroom_Address_Physical_ID) references 
Classroom_Address_Physical_Tbl (ID) on delete cascade
)ENGINE=InnoDB;


Create Table IF NOT EXISTS `Contact_Info_Tbl` (
Classroom_ID int,
Contact_Name varchar (20),
Contact_Title varchar (20),
Contact_Email varchar (20),
Contact_Phone varchar (20),
index ci (Classroom_ID),
foreign key (Classroom_ID) references 
Classroom_Info_Tbl (ID) on delete cascade
)ENGINE=InnoDB;

【讨论】:

    猜你喜欢
    • 2017-04-09
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2013-07-22
    相关资源
    最近更新 更多