2012-02-28 1 views
4

Я знаю, что в отношении этой ошибки много вопросов относительно SO, но даже применяя то, что я почерпнул из них, я все равно получаю «не могу создать таблицу (errno: 150) «MySQL errno: 150 невозможно создать таблицу

CREATE TABLE sch_results 
(
id INT NOT NULL AUTO_INCREMENT, 
s_id INT UNSIGNED NOT NULL, 
r_eid VARCHAR(10) NOT NULL, 
cohorts INT, 
allstudents INT, 
comments TEXT, 
PRIMARY KEY (id), 
FOREIGN KEY (s_id) REFERENCES scholarships (id), 
FOREIGN KEY (r_eid) REFERENCES sch_recommenders (eid) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

Я проверил, что внешние ключи хранятся точно под этим именем в соответствующих таблицах.
Я проверил, что соответствующие типы данных соответствуют этому запросу. Я проверил, что две существующие таблицы используют InnoDB и utf8.
Я добавил UNSIGNED NOT NULL к внешним ключам.
Я проиндексировал два внешних ключа в их таблицах. Первоначально я использовал s_id и r_id, но слышал, что это может вызвать некоторые проблемы. r_eid также уникален, поэтому я переключился на это. Это не первичный ключ.

Что мне не хватает? Благодаря!

УРОК УЗНАЙТЕ: Тщательно проверьте все аспекты ваших типов данных!

+0

все столбцы имеют одинаковые определения? Каковы стипендии и sch_recommenders? –

+0

стипендии id: длина INT 3 sch_recommenders eid: VARCHAR длина 10 – Beatrice

+0

вы можете показать как стипендии, так и структуру таблицы sch_recommenders? –

ответ

0

Оказывается, что для сопоставления установлено значение utf8-unicode-ci вместо utf8-general-ci. Исправлено, и теперь это работает.

2

По существу, все причины этой ошибки представляют собой исчерпывающий ресурс для того, что вызывает ошибку errno 150 (и errno 121/другие ошибки внешнего ключа) в MySQL.

MySQL Foreign Key Errors and Errno 150

1

Проблема заключается в том, что поля источника и цели должны быть одинаковыми во всех отношениях. Например, если в исходном поле «unsigned» off, а у цели есть «unsigned», вы получите эту ошибку.

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

  • Нет связанных вопросов^_^