簡體   English   中英

MySQL錯誤“無法創建表”外鍵約束

[英]MySQL Error “Can't create table” Foreign Key Constraint

我正在嘗試使用MySQL創建數據庫,但我的代碼遇到了困難。 我創建了具有一個計划用作另一個表中的外鍵的屬性的基本表,但是出現一條錯誤消息,提示我無法創建該表。 我只需要創建該表的幫助,因為我知道如何插入數據。

    create database aerogames_table;

CREATE TABLE
    O_DETAILS
    (
        B_Number INT NOT NULL,
        B_Name VARCHAR(60) NOT NULL,
        Order_ID INT NOT NULL,
        Order_CName VARCHAR(50) NOT NULL
    )
    engine=innodb;

CREATE TABLE
    P_DETAILS
    (
        PRO_ID INT NOT NULL PRIMARY KEY,
        Order_ID INT NOT NULL,
        CONSTRAINT fk_OrdID_this FOREIGN KEY (Order_ID) REFERENCES O_DETAILS(Order_ID),
        PRO_Seller VARCHAR (50) NOT NULL,
        PRO_Name VARCHAR (50) NOT NULL,
        PRO_Year INT NOT NULL,
        PRO_Price INT NOT NULL
    )
    engine=innodb;

1005-無法建立表格'aerogames_table.p_details'(錯誤號:150)

由於這個原因https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

    [CONSTRAINT [symbol]] 
        FOREIGN KEY [index_name] (index_col_name, ...)
        REFERENCES tbl_name (index_col_name,...)

外鍵需要引用索引列(不必是主鍵),因此您需要像這樣在O_DETAILS.Order_ID上創建索引

    CREATE TABLE
        O_DETAILS
        (
            B_Number INT NOT NULL,
            B_Name VARCHAR(60) NOT NULL,
            Order_ID INT NOT NULL,
            Order_CName VARCHAR(50) NOT NULL,
                    KEY (Order_ID)
        )
        engine=innodb;

    CREATE TABLE
        P_DETAILS
        (
            PRO_ID INT NOT NULL PRIMARY KEY,
            Order_ID INT NOT NULL,
            CONSTRAINT fk_OrdID_this FOREIGN KEY (Order_ID) REFERENCES O_DETAILS(Order_ID),
            PRO_Seller VARCHAR (50) NOT NULL,
            PRO_Name VARCHAR (50) NOT NULL,
            PRO_Year INT NOT NULL,
            PRO_Price INT NOT NULL
        )
        engine=innodb;

當然,如果將O_DETAILS.Order_ID設置為主鍵,它也會為您創建,並且可以正常工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM