Вопрос

У меня есть два стола: 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)
Это было полезно?

Решение

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

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

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

  • tab1.name и tab2.name не совсем одинаковый тип данных
  • tab1.name не уникальный

Другие советы

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

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

Может быть, у вашего ключа должно быть имя?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top