2014-04-20 137 views
0

我有我想與外鍵約束MySQL的添加外鍵約束錯誤

連接出於某種原因,這兩個表,當我試圖做到這一點,它失敗,並說:#1215 - Cannot add foreign key constraint

這是我的第一個表:

CREATE TABLE `zmaneyhayom` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`zman_id` varchar(255) NOT NULL, 
`tempHour` tinyint(1) NOT NULL, 
`tempHourType` varchar(255) NOT NULL, 
`tempHourNum` double NOT NULL, 
`tempMinutes` tinyint(1) NOT NULL, 
`tempMinutesType` varchar(255) NOT NULL, 
`tempMinutesNum` double NOT NULL, 
`regularMinutes` tinyint(1) NOT NULL, 
`regularMinutesNum` double NOT NULL, 
`equivalentMinutes` tinyint(1) NOT NULL, 
`equivalentMinutesNum` double NOT NULL, 
`degreesBelowHorizon` tinyint(1) NOT NULL, 
`degreesBelowHorizonNum` double NOT NULL, 
`beforeAfter` varchar(6) NOT NULL, 
`riseSet` varchar(4) NOT NULL, 
PRIMARY KEY (`id`), 
UNIQUE KEY `zman_id_2` (`zman_id`), 
KEY `zman_id` (`zman_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

而這個表保存ID和姓名,並最終在此表中的ID是上表(zman_id列)名稱:

CREATE TABLE `zmaneyhayomlabels` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`name` varchar(255) NOT NULL, 
PRIMARY KEY (`id`), 
UNIQUE KEY `id` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

這是我試圖以創建約束代碼:

ALTER TABLE `zmaneyhayom` ADD FOREIGN KEY ( `zman_id`) REFERENCES `luah_v2`.`zmaneyhayomlabels` (

`id` 
) ON DELETE NO ACTION ON UPDATE NO ACTION ; 

我不知道爲什麼它的失敗:/

我要的是,每當我去phpMyAdmin的和轉到第一個表格,而不是在zman_id中輸入一些id我將有一個選擇框,我可以選擇一個名稱(存儲在第二個表格中),但它將存儲的值將是ID。

回答

2

它們不是相同的類型id是INT並且zman_id是varchar。

你可以改變這個

`zman_id` varchar(255) NOT NULL, 

`zman_id` int(11) NOT NULL, 
+0

由於它的工作。當我需要選擇一個'zman_id'時,如何在'zmaneyhayom'上創建一個新記錄,我可以這樣做,我可以從'zmaneyhayomlabels'中選擇一個值而不是輸入值? – kfirba

+0

不明白你的意思,但很高興你現在能夠正常工作:)。 –

+0

我會盡力解釋我的自我。 'zmaneyhayom'有一個名爲'zman_id'的列。 'zmaneyhayomlabels'有一個名爲'id'的列,當我使用phpmyadmin將記錄添加到'zmaneyhayom'時,我需要選擇'zman_id'。現在,而不是輸入4,5,10等。我將有一個選擇框,我可以從中選擇價值。該值來自'zmaneyhayomlabels'表,並且與ID相關,因此如果我在'zmaneyhayomlabels'中有一個記錄:1-test,在選擇框中,我將能夠選擇'test',並且當我添加記錄,它會將'zman_id'值保存爲1(不是標籤名稱,而是id) – kfirba