我已经仔细检查了我的架构,而且它的正确...实际上还有一次构建它...现在它让我感到困扰的是一些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中解决了查询,导致同样的错误。
答案 0 :(得分:1)
人们,在过去的几天里,我意识到Doctrine可能没有已知的问题。
我的错误是我在一个表'unsigned:true'中为我的键定义了一个选项,并且没有为FK定义重复相同的内容:( 我的错,但解决方案是仔细检查您的数据类型。
调试MySQL相关错误的最佳方法是检查生成的SQL脚本。 您可以轻松发现列定义的差异。
感谢John,感谢您的兴趣。
答案 1 :(得分:1)
您可能正在使用INNODB表,这是现代mysql版本的默认值并遇到外键约束错误。 Read here获取完整的清单列表。
国外的相应栏目 密钥和引用的密钥必须具有 内部类似的内部数据类型 InnoDB使它们可以进行比较 没有类型转换。尺寸 并且整数类型的符号必须是 相同。字符串类型的长度需要 不一样。对于非二元的 (字符)字符串列, 字符集和校对必须 同样的。