2012-03-01 46 views
1

外部キーを使用していくつかの新しいテーブルを作成しようとしていますが、コードとエラーが表示されています。 私の外部キー?MYSQL外部キーを持つテーブルを作成するとエラーが発生する

#1064 - You have an error in your SQL syntax; 
    check the manual that corresponds to your MySQL server version for the 
    right syntax to use near '(`CustomerID`), 
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1' at line 10 



DROP TABLE IF EXISTS `Customer`; 
CREATE TABLE `Customer` (

    `CustomerID`   INT UNSIGNED AUTO_INCREMENT, 
    `Customer_Number`  VARCHAR(100), 
    `Customer_Name`   VARCHAR(100), 
    `Website`    VARCHAR(255), 
    `Logo`     VARCHAR(100), 

    PRIMARY KEY(`CustomerID`) 
) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1; 


    DROP TABLE IF EXISTS `Reports`; 
    CREATE TABLE `Reports` (

     `ReportsID`    INT UNSIGNED AUTO_INCREMENT, 
     `Role`     VARCHAR(70), 
     `Region`    VARCHAR(70), 
     `Inpection_Type`  VARCHAR(70), 
     `CustomerID`   INT UNSIGNED, 
     `Report_Date`   DATE NOT NULL DEFAULT '0000-00-00', 
     `Order_Date`   TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
     `Customer_Name`   VARCHAR(100), 
     `Customer_Division`  VARCHAR(70), 
     `Memo`     VARCHAR(255), 
     `Billing_Key`   VARCHAR(70), 

     PRIMARY KEY(`ReportsID`), 
     FOREIGN KEY (`CustomerID`) REFERENCES Customer(`CustomerID`) ON DELETE CASCADE ON UPDATE CASCADE 
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1; 

    DROP TABLE IF EXISTS `CustomerContact`; 
    CREATE TABLE `CustomerContact` (

     `ContactID`    INT UNSIGNED AUTO_INCREMENT, 
     `CustomerID`   INT UNSIGNED, 
     `Division`    VARCHAR(100), 
     `Contact`    VARCHAR(100), 
     `Address`    VARCHAR(255), 
     `Phone`     VARCHAR(100), 
     `Fax`     VARCHAR(100), 
     `Email`     VARCHAR(100), 
     `Mobile`    VARCHAR(100), 

     PRIMARY KEY(`ContactID`), 
     FOREIGN KEY (`CustomerID) REFERENCES Customer(`CustomerID`) ON DELETE CASCADE ON UPDATE CASCADE 
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1; 
+0

「Logo varchar()」と「主キー」の間にカンマがありませんか? – biziclop

+0

@biziclop修理後と同じ結果 – ehime

答えて

1

ロゴ列、および外部キー定義のCustomerID列名の最後にバックスティックがありません。

これらを修正してDDLを再実行すると、CustomerContactテーブルにCustomerIDという名前の列がないことがわかります。そのため、追加する必要があります。

DROP TABLE IF EXISTS `Customer`; 
    CREATE TABLE `Customer` ( 
     `CustomerID`   INT UNSIGNED AUTO_INCREMENT, 
     `Customer_Number`  VARCHAR(100), 
     `Customer_Name`   VARCHAR(100), 
     `Website`    VARCHAR(255), 
     `Logo`     VARCHAR(100), 
     PRIMARY KEY(`CustomerID`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1; 


    DROP TABLE IF EXISTS `CustomerContact`; 
    CREATE TABLE `CustomerContact` (

     `ContactID`    INT UNSIGNED AUTO_INCREMENT, 
     `Division`    VARCHAR(100), 
     `Contact`    VARCHAR(100), 
     `Address`    VARCHAR(255), 
     `Phone`     VARCHAR(100), 
     `Fax`     VARCHAR(100), 
     `Email`     VARCHAR(100), 
     `Mobile`    VARCHAR(100), 
     PRIMARY KEY(`ContactID`), 
     CONSTRAINT FOREIGN KEY (`CustomerID`) REFERENCES Customer(`CustomerID`) ON DELETE CASCADE ON UPDATE CASCADE 
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1; 
0

カンマが欠落している:

`Logo`     VARCHAR(100), 
    PRIMARY KEY(`CustomerID`) 

など

また

最後にバックダニ:あなたが不足しているコンマの後を持って

CONSTRAINT FOREIGN KEY (`CustomerID`) REFERENCES Customer(`CustomerID`) ON DELETE CASCADE ON UPDATE CASCADE 
+0

私はいくつかの欠けているカンマでコードを更新しましたが、同じ結果を返しました – ehime

+0

最後の行は、バックティックがありません(更新された応答を参照) –

関連する問題