2016-09-17 52 views
-2

因此,首先,下面是我的代码。当我在学校的mysql服务器上运行这个服务时,我找回了ERROR 1005(HY000)。尽管这个错误只发生在客户,订单和odetails表中。我确实收到了一些警告。从我所做的研究来看,是由于我错误地实施了innodb而导致的。任何帮助将不胜感激,特别是因为这只是这项任务的开始步骤之一。MySql问题使用ENGINE = INNODB

drop table IF EXISTS employees; 
drop table IF EXISTS parts; 
drop table IF EXISTS customers; 
drop table IF EXISTS orders; 
drop table IF EXISTS odetails; 
drop table IF EXISTS zipcodes; 

create table employees 
    (eno  numeric(4,0), 
    ename  varchar(15), 
    zip  numeric(5,0), 
    hdate  date default null, 
    primary key (eno), 
    foreign key (zip) references zipcodes (zip) 
    )ENGINE=InooDB; 

create table parts 
    (pno  numeric(5,0), 
    pname  varchar(30), 
    qoh  numeric(3,0), 
    price  numeric(10,2), 
    level  numeric(2,0), 
    primary key (pno) 
    )ENGINE=InnoDB; 

create table customers 
    (cno  numeric(4,0), 
    cname  varchar(15), 
    street  varchar(30), 
    zip  numeric(5,0), 
    phone  varchar(12), 
    primary key (cno), 
    foreign key (zip) references zipcodes (zip)) 
    ENGINE=InnoDB; 

create table orders 
    (ono  numeric(4,0), 
    cno  numeric(4,0), 
    eno  numeric(4,0), 
    received date default null, 
    shipped date default null, 
    primary key (ono), 
    foreign key (cno) references customers (cno), 
    foreign key (eno) references employees (eno) 
    )ENGINE=InnoDB; 

create table odetails 
    (ono  numeric(4,0), 
    pno  numeric(5,0), 
    qty  numeric(1,0), 
    primary key (ono, pno), 
    foreign key (ono) references orders (ono), 
    foreign key (pno) references parts (pno) 
    )ENGINE=InnoDB; 

create table zipcodes 
    (zip  numeric(5,0), 
    city  varchar(15), 
    primary key (zip) 
    )ENGINE=InnoDB; 
+2

请阅读[问]并在您的问题中包含所有相关的错误和警告。也就是说,您的客户表通过外键引用zipcodes表,外键仅在此脚本的末尾创建,并且错误和警告均与该问题级联。 – CodeCaster

+1

你有一个错字“InooDB”。你的数据类型也有点不标准。拍摄一个简单的简“INT”,而不是PK(和其他异常,如您的邮编)上的十进制(n,m) – Drew

+0

哇,所有来自打字错误。切换到使用INT。还要感谢关于移动邮编的建议,忘记了这一点。谢谢你们,我真的很感激。 –

回答

0

1005 - 根据FOREIGN KEYs以正确的顺序声明表格。例如,首先执行zipcodes