Я работаю над добавлением в приложение ColdFusion 2016 с помощью ORM. Приложение подтягивается и не выдает никаких ошибок до добавления кода второй таблицы (TableTwo
). Как только добавляется второй код таблицы, появляется сообщение об ошибке:
Can't create table
XXXXX
.YYYYY
(errno: 150 "Foreign key constraint is incorrectly formed")
Где XXXXX
- это имя приложения в целом, а не TableOne
, TableTwo
или BaseTable
.
Есть ли какие-нибудь идеи относительно того, что вызывает такую ошибку в приложении?
Если я удалю все ссылки на TableTwo
и перезагружу ORM, приложение снова откроется. TableOne
и TableTwo
необходимо присоединить к BaseTable
, но они не будут соединяться друг с другом.
Ниже приведен пример текущего форматирования кода.
TableOne.cfc
component {
property name = "id" fieldType = "id" ormtype = "int" type = "numeric" generator = "native";
property name = "baseTableID" ormtype = "int" type = "numeric" insert = "false" update = "false";
//relations
property name"baseTable" fieldType = "one-to-one" cfc = "BaseTable" fkcolumn = "baseTableID" joincolumn = "id" notnull = "true" casecade = "save-update";
}
BaseTable.cfc
component {
property name = "id" fieldType = "id" ormtype = "int" type = "numeric" generator = "native";
//relations
property name = "TableOne" fieldtype = "one-to-one" cfc = "TableOne" mappedby = "baseTable" cascade = "all-delete-orphan";
--Attempting to add a second one
property name = "TableTwo" fieldtype = "one-to-one" cfc = "TableTwo" mappedby = "baseTable" cascade = "all-delete-orphan";
}
TableTwo.cfc
component {
property name = "id" fieldType = "id" ormtype = "int" type = "numeric" generator = "native";
property name = "baseTableID" ormtype = "int" type = "numeric" insert = "false" update = "false";
//relations
property name"BaseTable" fieldType = "one-to-one" cfc = "BaseTable" fkcolumn = "baseTableID" joincolumn = "id" notnull = "true" casecade = "save-update";
}
У вас есть опечатка в атрибуте
property
таблицы BaseTable в файлах TableOne.cfc и TableTwo.cfc. Вместоcascade
у васcasecade
. Это действительно в вашем коде или только здесь, в stackoverflow?