2012-03-12 64 views
0

所以我試圖爲作業創建一個商務系統。我已經使用QSEE創建ERD here is a screen shot of it。我試圖複製和粘貼每個單獨的語句到SQL功能,但它拋出了錯誤信息有關字段不存在,導入整個文檔不起作用:PHPmyAdmin拋出錯誤,無法成功導入sql;

CREATE TABLE _customer(
CustomerID INTEGER NOT NULL, 
FirstName VARCHAR(20) NOT NULL, 
LastName VARCHAR(20) NOT NULL, 
Building VARCHAR(20) NOT NULL, 
Address1 VARCHAR(30) NOT NULL, 
Address2 VARCHAR(30), 
City VARCHAR(20) NOT NULL, 
County VARCHAR(20), 
Postcode VARCHAR(8) NOT NULL, 
Phone INTEGER, 
Email VARCHAR(30) NOT NULL, 
Password VARCHAR(20) NOT NULL, 
BillingBuilding VARCHAR(20) NOT NULL, 
BillingAddress1 VARCHAR(20) NOT NULL, 
BillingAddress2 VARCHAR(20), 
BillingCity VARCHAR(20) NOT NULL, 
BillingCounty VARCHAR(20), 
BillingPostcode VARCHAR(8) NOT NULL, 
ShippingBuilding VARCHAR(20), 
ShippingAddress1 VARCHAR(20), 
ShippingAddress2 VARCHAR(20), 
ShippingCity VARCHAR(20), 
ShippingCounty VARCHAR(20), 
ShippingPostcode VARCHAR(8), 
-- Specify the PRIMARY KEY constraint for table "_customer". 
-- This indicates which attribute(s) uniquely identify each row of data. 
CONSTRAINT pk__customer PRIMARY KEY (CustomerID) 
); 

CREATE TABLE _product(
    ProductID INTEGER NOT NULL, 
    SKU INTEGER NOT NULL, 
    Name VARCHAR(20), 
    Description VARCHAR(100), 
    StockQuantity INTEGER NOT NULL, 
    UnitPrice INTEGER NOT NULL, 
    Size VARCHAR(1) NOT NULL, 
    Colour VARCHAR(8) NOT NULL, 
    Picture VARCHAR(15), 
    LastUpdate TIMESTAMP(8), 
    fk1_SupplierID INTEGER NOT NULL, 
    -- Specify the PRIMARY KEY constraint for table "_product". 
    -- This indicates which attribute(s) uniquely identify each row of data. 
    CONSTRAINT pk__product PRIMARY KEY (ProductID) 
); 

CREATE TABLE _customerorder(
    OrderID INTEGER NOT NULL, 
    OrderDate TIMESTAMP(8) NOT NULL, 
    Amount DECIMAL(8,2), 
    fk1_PaymentID INTEGER NOT NULL, 
    fk2_CustomerID INTEGER NOT NULL, 
    -- Specify the PRIMARY KEY constraint for table "_customerorder". 
    -- This indicates which attribute(s) uniquely identify each row of data. 
    CONSTRAINT pk__customerorder PRIMARY KEY (OrderID,fk1_CustomerID) 
); 

CREATE TABLE _payment(
    PaymentID INTEGER NOT NULL, 
    PaymentType VARCHAR(20) NOT NULL, 
    -- Specify the PRIMARY KEY constraint for table "_payment". 
    -- This indicates which attribute(s) uniquely identify each row of data. 
    CONSTRAINT pk__payment PRIMARY KEY (PaymentID) 
); 

CREATE TABLE _orderedproduct(
    OrderDetailID INTEGER NOT NULL, 
    Quantity INTEGER, 
    Total INTEGER, 
    Size INTEGER, 
    Colour INTEGER, 
    fk1_OrderID INTEGER NOT NULL, 
    fk1_fk1_CustomerID INTEGER NOT NULL, 
    fk2_ProductID INTEGER NOT NULL, 
    -- Specify the PRIMARY KEY constraint for table "_orderedproduct". 
    -- This indicates which attribute(s) uniquely identify each row of data. 
    CONSTRAINT pk__orderedproduct PRIMARY KEY (OrderDetailID) 
); 

CREATE TABLE _supplier(
    SupplierID INTEGER NOT NULL, 
    CompanyName VARCHAR(20) NOT NULL, 
    SalesFirstName VARCHAR(20) NOT NULL, 
    SalesLastName VARCHAR(20) NOT NULL, 
    SalesTitle VARCHAR(20), 
    Address1 VARCHAR(20) NOT NULL, 
    Address2 VARCHAR(20), 
    City VARCHAR(20), 
    County VARCHAR(20), 
    Phone INTEGER, 
    Email VARCHAR(30), 
    -- Specify the PRIMARY KEY constraint for table "_supplier". 
    -- This indicates which attribute(s) uniquely identify each row of data. 
    CONSTRAINT pk__supplier PRIMARY KEY (SupplierID) 
); 


ALTER TABLE _customerorder ADD CONSTRAINT fk1__customerorder_to__payment FOREIGN KEY(fk1_PaymentID) REFERENCES _payment(PaymentID) ON DELETE RESTRICT ON UPDATE RESTRICT; 

ALTER TABLE _orderedproduct ADD CONSTRAINT fk1__orderedproduct_to__customerorder FOREIGN KEY(fk1_OrderID,fk1_fk1_CustomerID) REFERENCES _customerorder(OrderID,fk1_CustomerID) ON DELETE RESTRICT ON UPDATE RESTRICT; 

ALTER TABLE _orderedproduct ADD CONSTRAINT fk2__orderedproduct_to__product FOREIGN KEY(fk2_ProductID) REFERENCES _product(ProductID) ON DELETE RESTRICT ON UPDATE RESTRICT; 

ALTER TABLE _product ADD CONSTRAINT fk1__product_to__supplier FOREIGN KEY(fk1_SupplierID) REFERENCES _supplier(SupplierID) ON DELETE RESTRICT ON UPDATE RESTRICT; 

ALTER TABLE _customerorder ADD CONSTRAINT fk2__customerorder_to__customer FOREIGN KEY(fk2_CustomerID) REFERENCES _customer(CustomerID) ON DELETE RESTRICT ON UPDATE RESTRICT 

;

+1

你能發佈錯誤消息嗎? – 2012-03-12 19:37:35

+0

@SamDurfel當然: '#1072 - 表'中不存在鍵列'fk1_CustomerID',即在_customerorder表上,在語句結尾 – 2012-03-12 19:41:06

+0

是的,這是你的問題:你沒有列在你的customerorder表中稱爲'fk1_CustomerID'。 – 2012-03-12 19:44:07

回答

1

將所有TIMESTAMP(N)類型更改爲TIMESTAMP。寬度選項(N)很久以前就被刪除了。

+0

謝謝,有幫助,但不能解決我的問題。 – 2012-03-12 19:47:06

+1

我運行你的腳本,它抱怨TIMESTAMP。運行修改的腳本也會導致錯誤。您需要將PRIMARY KEY(OrderID,fk1_CustomerID)更改爲PRIMARY KEY(OrderID,fk2_CustomerID)。 – 2012-03-12 19:54:20

+0

您還需要稍後在ALTER語句中更改它:_customerorder(OrderID,fk2_CustomerID)。或者,不要將fk1_CustomerID更改爲fk2,您可以更改CREATE TABLE語句中的列名稱。 – 2012-03-12 19:59:15