2017-02-22 20 views
1

創建約束時,這是我的t_complaint錯誤#SQL-890_730在MySQL

CREATE TABLE `t_complaint` (
    `idcomplaint` int(11) NOT NULL, 
    `tglterima` date DEFAULT NULL, 
    `dept` varchar(5) DEFAULT NULL, 
    `pengirim` varchar(255) DEFAULT NULL, 
    `kontak` varchar(255) DEFAULT NULL, 
    `email` varchar(255) DEFAULT NULL, 
    `telp` varchar(255) DEFAULT NULL, 
    `jenis` varchar(45) DEFAULT NULL, 
    `uraian` text, 
    `uniqueid` varchar(9) DEFAULT NULL, 
    `responder` varchar(245) DEFAULT NULL, 
    `tgljawab` date DEFAULT NULL, 
    `jawaban` text, 
    `status` varchar(45) DEFAULT NULL, 
    `tglclose` date DEFAULT NULL, 
    `createddate` datetime DEFAULT NULL, 
    `createdby` varchar(45) DEFAULT NULL, 
    `modifieddate` datetime DEFAULT NULL, 
    `modifiedby` varchar(45) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

,這是t_complaint_detail

CREATE TABLE `t_complaint_detail` (
    `no` int(11) NOT NULL, 
    `uniqueid` varchar(9) DEFAULT NULL, 
    `uploader` varchar(100) DEFAULT NULL, 
    `st_uploader` int(11) DEFAULT NULL, 
    `file_upload` text, 
    `original_name` text, 
    `status` int(11) DEFAULT '1' 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
  • t_complaint.idcomplaint是自動遞增屬性
  • 主鍵
  • t_complaint_detail.no是自動增量屬性的主鍵
  • 我想通過uniqueid
  • 連接這些表我已經試過ALTER TABLE t_complaint_detail ADD CONSTRAINT fk_unique FOREIGN KEY ('uniqueid') REFERENCES t_complaint('uniqueid')
  • 上面的查詢提供了錯誤。該錯誤是#1005 - Can't create table BSM .#SQL-890_730 (errno: 150 "Foreign key constraint is incorrectly formed") (Details…)
  • bsm錯誤是我的數據庫(我的數據庫是BSM)
+1

'un iqueid' varchar(9)DEFAULT NULL,'用int替換varchar並檢查 –

+0

,但它的值是字符串/文本。 – ashura91

+0

'uniqueid'是外鍵嗎?對? –

回答

0

外鍵應該必須在父表的主鍵。問題是,爲什麼要在表中添加多餘的'uniqueId'?您可以簡單地定義這樣的外鍵約束:

t_complaint_detail ADD CONSTRAINT fk_unique FOREIGN KEY('idcomplaint')參考t_complaint('idcomplaint')。

它應該工作。

+0

idcomplaint,並且no沒有連接。它們都是主要關鍵。但可能有不同的值 – ashura91

+0

它不一定是在主鍵上,你必須刪除列名稱周圍的引號或用反引號替換它們。 –

0

錯誤就這樣

ERROR 1215(HY000):無法添加外鍵約束

因爲你需要創建primary key在table.you可以添加主鍵 這樣

alter table t_complaint_detail modify uniqueid varchar(20) not null; 

and

alter table t_complaint_detail modify uniqueid varchar(20) not null; 

之後會作品

ALTER TABLE t_complaint_detail ADD CONSTRAINT fk_unique FOREIGN KEY (uniqueid) REFERENCES t_complaint(uniqueid); 

please read here for more reference這將有助於

0

它的工作對我罰款: 試試這個:

ALTER TABLE t_complaint ADD CONSTRAINT t_complaint_detail 
FOREIGN KEY (uniqueid) REFERENCES t_complaint(uniqueid) 

參考這裏: https://www.w3schools.com/sql/sql_foreignkey.asp

+0

它可以工作,因爲您刪除了uniqueid附近的單引號。 –