我有两个表“affiliate_stats”和“transaction”, 'affiliate_stats' 有列 'affiliate_sales' varchar(2000) (子表), 并且“transaction”具有列“_id”varchar(100) 主键(父表)
当我将外键添加到引用“_id”的“affiliate_sales”时
经过
更改表affiliate_stats添加约束fk_affili_sales外键(affiliate_sales)引用事务(_id);
get me this error Specified key was too long; max key length is 3072 经过tes
我知道两列大小应该相等,但就我而言,我需要不同的大小来处理这个问题。
在许多来源中搜索,没有明确的答案,并且没有一个解决方案适合我。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
将列
affiliate_sales更改为VARCHAR(100)。如果它是
transaction(_id)的外键,那么它不需要是VARCHAR(2000)因为它永远不能容纳超过 100 的字符串无论如何,字符。执行此操作之前,请确保该列中当前没有长度超过 100 个字符的字符串。
回复您的评论:
如果您打算在列中存储“数组”(即带有逗号分隔列表的字符串),您应该明白无论如何您都无法在其上创建外键。外键要求列将一个值与
transaction表中的一行相关联。如果添加外键约束,则该列中只能存储一个 id。听起来
affiliate_stats和transaction之间确实存在多对多关系。您需要第三个表来建模多对多关系。