ошибка при добавлении внешнего ключа - PullRequest
0 голосов
/ 16 марта 2011

У меня есть две таблицы: tab1,tab2

Я хочу добавить внешний ключ к tab2 и написал этот запрос

ALTER TABLE tab2
ADD FOREIGN KEY(name) REFERENCES tab1(name)

Но я получаю эту ошибку:

error 1005(HY000):can't create table 'club.#sql-6f0_2' (errno:150)

Что не так?

Edit

i write this tables only for test.

tab1

name char(20) private key

lname char(20)


tab2

ssn int private key

name char(20)

Ответы [ 3 ]

4 голосов
/ 16 марта 2011

Я ответил вам на это около часа назад в комментарии к вашему другому вопросу, но здесь он снова:

Вы можете получить подробную информацию об этой ошибке, набрав SHOW ENGINE INNODB STATUS\G и прочитав LATEST FOREIGN KEY ERRORsection.

Наиболее вероятные причины этой ошибки:

  • tab1.name и tab2.name не совпадают с типом данных
  • tab1.name неуникальный
0 голосов
/ 16 марта 2011

Вы не можете определить внешние ключи в механизмах хранения MySQL по умолчанию (ISAM, MyISAM), использовать InnoDB в качестве механизма, а затем добавить ограничения внешнего ключа.

0 голосов
/ 16 марта 2011

попробуйте это:

alter table tab2
add foreign key my_key(name) references tab1(name)

возможно ваш ключ должен иметь имя?

...