2016-09-17 53 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