Код ошибки MySQL: 1005 - PullRequest
       1

Код ошибки MySQL: 1005

3 голосов
/ 17 сентября 2010

Я пытаюсь добавить внешние ключи в свою таблицу, но получаю эту ошибку. Код ошибки: 1005 Не удается создать таблицу 'william. # Sql-88c_3' (номер ошибки: 150) У меня есть 3 таблицы. сотрудник, клиент и договор.

сотрудник [employee_no PK], Клиент [customer_no PK] контракт [contract_no PK] Я хочу иметь внешние ключи для контракта в качестве контракта [контракт_no PK, employee_no FK], customer_no FK]

Я пытался сделать это напрямую, но это не удалось, я сейчас пытаюсь использовать оператор alter. Что-то не так со скриптом Alter?

    ALTER TABLE contract
    ADD CONSTRAINT `employee_no_fk2` FOREIGN KEY (`employee_no`) REFERENCES `employee` 
    (`employee_no`);


   ALTER TABLE contract
    ADD CONSTRAINT `Customer_no_fk2` FOREIGN KEY (`Customer_no`) REFERENCES `client` 
    (`Customer_no`);

Ответы [ 4 ]

10 голосов
/ 17 сентября 2010

Большая часть таких ошибок будет связана с несоответствием типов данных или около того .. Если бы вы могли перейти по этим ссылкам .. это может помочь вам, я думаю .. Проверьте это ... также Check-this

Как говорится во второй ссылке:

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

mysql> SHOW engine innodb STATUS;

------------------------
LATEST FOREIGN KEY ERROR
------------------------
100130 17:16:57 Error IN FOREIGN KEY CONSTRAINT OF TABLE sampledb/#sql-4a0_2:
FOREIGN KEY(member_type)
REFERENCES common_lookup(common_lookup_id):
Cannot find an INDEX IN the referenced TABLE WHERE the
referenced COLUMNS appear AS the FIRST COLUMNS, OR COLUMN types
IN the TABLE AND the referenced TABLE do NOT MATCH FOR CONSTRAINT.
2 голосов
/ 08 января 2013

убедитесь, что одно из ключевых полей, на которое вы пытаетесь сослаться, не имеет индекса и / или не является первичным ключом.и два ключевых поля типа и / или размера должны точно совпадать, также убедитесь, что обе таблицы являются таблицами InnoDB.

1 голос
/ 05 августа 2013

Это может произойти по двум причинам

  1. Не удалось создать таблицу, так как ограничение внешнего ключа было сформировано неправильно или
  2. Несоответствие типов данных в ограничениях.

будет полезна ссылка ниже

http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html

0 голосов
/ 25 января 2014

В прошлый раз, когда я сталкивался с этим, это были ограничения: тип ключа ссылочной таблицы был 'int', а таблица ссылок имела ошибочное поле ссылки 'unsigned int' вместо int.

...