Проблемы с добавлением связей FK с помощью Doctrine Build Task - PullRequest
0 голосов
/ 21 июня 2010

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

2 Qs здесь: 1. существует ли верхний предел для количества отношений (зависимостей / FK), которые может иметь таблица? У меня до 7 ФК в таблицах 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 ]

1 голос
/ 01 мая 2011

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

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

1 голос
/ 23 июня 2010

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

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

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

Спасибо Джону за проявленный интерес.

...