通过Doctrine Build Task添加FK关系的问题

时间:2010-06-21 04:31:22

标签: mysql symfony1 doctrine foreign-key-relationship mysql-error-1005

我已经仔细检查了我的架构,而且它的正确...实际上还有一次构建它...现在它让我感到困扰的是一些FK关系...... 我也检查了数据类型。所有都是int(4)或int(2)

2 Qs: 1.表可以有关系(依赖关系/ FK)的上限吗? 我在表中有多达7个FK 2.引用父表(PK)的表的数量是否有上限? 我在20个表中有多达30个字段,指的是选项表中的单个ID列 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 个答案:

答案 0 :(得分:1)

人们,在过去的几天里,我意识到Doctrine可能没有已知的问题。

我的错误是我在一个表'unsigned:true'中为我的键定义了一个选项,并且没有为FK定义重复相同的内容:( 我的错,但解决方案是仔细检查您的数据类型。

调试MySQL相关错误的最佳方法是检查生成的SQL脚本。 您可以轻松发现列定义的差异。

感谢John,感谢您的兴趣。

答案 1 :(得分:1)

您可能正在使用INNODB表,这是现代mysql版本的默认值并遇到外键约束错误。 Read here获取完整的清单列表。

  

国外的相应栏目   密钥和引用的密钥必须具有   内部类似的内部数据类型   InnoDB使它们可以进行比较   没有类型转换。尺寸   并且整数类型的符号必须是   相同。字符串类型的长度需要   不一样。对于非二元的   (字符)字符串列,   字符集和校对必须   同样的。