Проблемы с добавлением связей FK с помощью Doctrine Build Task

Я дважды проверил мою схему, и ее правильная... доктрина факта также создала ее однажды... и теперь это беспокоит меня некоторыми отношениями FK... Я также проверил типы данных. Все int(4) или int (2)

2 вопросы здесь: 1. существует ли верхний предел для количества отношений (зависимостей /FK), которые может иметь таблица? У меня до 7 FK в таблицах 2. Есть ли верхний предел для количества таблиц, ссылающихся на родительскую таблицу (PK)? У меня до 30 полей в 20 таблицах, относящихся к одному столбцу идентификатора в таблице параметров 3. Требуется ли определение поведения CASCASE? Я не использовал это!

В этом случае лучше жить без отношений?

Ошибка:

 SQLSTATE[HY000]: General error: 1005 Can't create table 'sokidb.#sql-268_1d' (errno: 121). Failing Query: "ALTER TABLE Acc_Gl_Accounts ADD CONSTRAINT Acc_Gl_Accounts_society_id_Soc_Societies_id FOREIGN KEY (society_id) REFERENCES Soc_Societies(id)". Failing Query: ALTER TABLE Acc_Gl_Accounts ADD CONSTRAINT Acc_Gl_Accounts_society_id_Soc_Societies_id FOREIGN KEY (society_id) REFERENCES Soc_Societies(id)  

Я также запустил запросы в MySQL напрямую, это приводит к той же ошибке.

2 ответа

Решение

Люди, за последние несколько дней я понял, что, вероятно, нет никакой известной проблемы с Доктриной.

Моя ошибка состояла в том, что я определил опцию для своего ключа в одной таблице "unsigned:true" и не повторил то же самое для определения FK:(Вся моя ошибка, но решение состоит в том, чтобы дважды проверить ваши типы данных.

И лучший способ отладки ошибок, связанных с MySQL, - это проверка сгенерированного сценария SQL. Вы можете легко обнаружить различия в определениях столбцов.

Спасибо Джон, за твой интерес.

Вы, вероятно, используете таблицы INNODB, которые используются по умолчанию для современных версий mysql, и при этом возникает ошибка ограничения внешнего ключа. Читайте здесь для получения полного списка требований.

Соответствующие столбцы во внешнем ключе и ссылочном ключе должны иметь одинаковые внутренние типы данных внутри InnoDB, чтобы их можно было сравнивать без преобразования типов. Размер и знак целочисленных типов должны быть одинаковыми. Длина типов строк не обязательно должна быть одинаковой. Для недвоичных (символьных) строковых столбцов набор символов и параметры сортировки должны быть одинаковыми.

Другие вопросы по тегам