После выполнения некоторых исследований, кажется, что errno 150 возникает, когда типы файлов таблиц не совпадают, или при возникновении неполадок при создании внешнего ключа. Во всяком случае, мой Создать скрипт выглядит следующим образом:SQLException: Невозможно создать таблицу errno 150/foreign key
CREATE TABLE IF NOT EXISTS Users
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
fooType INT UNSIGNED NOT NULL DEFAULT 0,
...More columns, nothing special...
PRIMARY KEY (`id`),
CONSTRAINT Users_fooType_fk
FOREIGN KEY (fooType)
REFERENCES FooTypes (id)
ON DELETE CASCADE
) ENGINE = InnoDB#
CREATE TABLE IF NOT EXISTS FooTypes
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
...More columns, nothing special...
PRIMARY KEY (`id`)
) ENGINE = InnoDB#
Итак, мои настольные двигатели соответствуют как явно и неявно (я использую MySQL 5.1.49, который использует InnoDB по умолчанию AFAIK).
Таким образом, единственное отличие заключается в том, что у Users.fooType есть значение по умолчанию. Это проблема? Если это так, как мне настроить значение по умолчанию? Если это не так, никто не видит ничего плохого в коде? Извините, мне пришлось немного запутать его, но вы должны смириться с этим, что обфусканные куски кода верны/не связаны.
* Facepalm * Да, что бы это сделать, не будет тогда? Благодаря! –