2017-07-07 68 views
0

我一直在MySQL中遇到同樣的錯誤,我不知道我在這裏丟失了什麼。 我對使用MySQL非常新,所以我不確定是否需要添加約束條件?如果我不需要約束,還有另外一種方法去定義關係嗎?下面是我的語法:無法在MySQL中添加外鍵約束錯誤?

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

    `art_id` INT NOT NULL, 
    `art_name` VARCHAR(45) NULL, 
    `artist_id` INT(11) NULL, 
    `location_id` INT(11) NULL, 
    `employee_id` INT(11) NULL, 
    `art_received` DATE NULL, 

    primary key (`art_id`), 
    FOREIGN KEY (`artist_id`) REFERENCES artist(`artist_id`), 
    FOREIGN KEY (`location_id`) REFERENCES location(`location_id`), 
    FOREIGN KEY (`employee_id`) REFERENCES employee(`employee_id`) 

); 

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

`employee_id` int(11), 
`employee_userid` varchar(45), 
`employee_fname` varchar(45), 
`employee_lname` varchar(45), 
`employee_phone` varchar (10), 

primary key (`employee_id`) 

); 

DROP TABLE IF EXISTS `artist`; 
CREATE TABLE `artist` (
`artist_id` int(11), 
`artist_first` varchar(45), 
`artist_last` varchar(45), 
`artwork_title` varchar(45), 

primary key (`artist_id`) 

); 

DROP TABLE IF EXISTS `location`; 
CREATE TABLE `location` (
`location_id` int(11), 
`location_name` varchar(45), 
`start_date` date, 
`end_date` date, 

primary key (`location_id`) 

); 
+0

你能分享你得到的錯誤嗎? – Mureinik

+2

如果按照該順序進行操作,則藝術會爲創建不存在的表的外鍵創建問題。您需要確保首先創建的所有表格引用都是先創建的。 – SenSok

回答

1

簡單開關,它的表被創建第一的順序。當你創建 表art其他三個表仍然沒有被創建,所以它不知道什麼藝術家(artist_id),位置(location_id),僱員(employee_id) 都是。

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

    `employee_id` int(11), 
    `employee_userid` varchar(45), 
    `employee_fname` varchar(45), 
    `employee_lname` varchar(45), 
    `employee_phone` varchar (10), 

    primary key (`employee_id`) 

); 

DROP TABLE IF EXISTS artist; 
CREATE TABLE `artist` (
    `artist_id` int(11), 
    `artist_first` varchar(45), 
    `artist_last` varchar(45), 
    `artwork_title` varchar(45), 

    primary key (`artist_id`) 

); 

DROP TABLE IF EXISTS `location`; 
CREATE TABLE `location` (
    `location_id` int(11), 
    `location_name` varchar(45), 
    `start_date` date, 
    `end_date` date, 

    primary key (`location_id`) 

); 



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

    `art_id` INT NOT NULL, 
    `art_name` VARCHAR(45) NULL, 
    `artist_id` int(11) NULL, 
    `location_id` int(11) NULL, 
    `employee_id` int(11) NULL, 
    `art_received` DATE NULL, 

    primary key (`art_id`), 

    FOREIGN KEY (`artist_id`) REFERENCES artist(`artist_id`), 
    FOREIGN KEY (`location_id`) REFERENCES location(`location_id`), 
    FOREIGN KEY (`employee_id`) REFERENCES employee(`employee_id`) 



); 

歡迎來到StackOverflow。如果您發現此答案或任何其他答案有幫助,請將其標記爲解決方案。這樣可以幫助社區,如果其他程序員遇到同樣的問題,他們可以很容易地找到解決方案。

+0

這非常有意義,並且完美運作。感謝您的幫助。 –