2017-02-22 4 views
1

Это мой t_complaintError # 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 является первичным ключом с Auto Increment атрибут
  • t_complaint_detail.no - первичный ключ с атрибутом Auto Increment
  • Я хотел бы связал эти таблицы с помощью 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, замените varchar на int и проверите –

+0

, но его значение - строка/текст. – ashura91

+0

'uniqueid' является иностранным ключом здесь? правильно? –

ответ

0

Внешний ключ должен должен быть первичный ключ в родительской таблице. Вопрос в том, почему вы добавляете избыточный «uniqueId» в обе таблицы? Вы можете просто определить ограничение внешнего ключа следующим образом:

t_complaint_detail ADD CONSTRAINT fk_unique FOREIGN KEY ('idcomplaint') ССЫЛКИ t_complaint ('idcomplaint').

Должно работать.

+0

idcomplaint и нет соединения нет. Оба они выступают в качестве первичного ключа.Но может иметь другое значение – ashura91

+0

Это не должно быть на первичном ключе, и вам нужно будет удалить кавычки вокруг имени столбца или заменить их обратными окнами. –

0

ошибки пришел как этот

ERROR 1215 (HY000): Невозможно добавить ограничение внешнего ключа

Потому что вам нужно, чтобы создать primary key в table.you может добавить первичный ключ как этот

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

и

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. –

Смежные вопросы