1

我正在尝试创建一个 fk,但 MySQL 不允许它...

Identifier name 'foobarbaz_FK_CATALOG_PRODUCT_ENTITY_WEEE_DISCOUNT_PRODUCT_ENTITY' is too long [ CREATE TABLE `foobarbaz_weee_discount` (   `entity_id` int(10) unsigned NOT NULL DEFAULT '0',   `website_id` smallint(5) unsigned NOT NULL DEFAULT '0',   `customer_group_id` smallint(5) unsigned NOT NULL,   `value` decimal(12,4) NOT NULL DEFAULT '0.0000',   KEY `foobarbaz_FK_CATALOG_PRODUCT_ENTITY_WEEE_DISCOUNT_WEBSITE` (`website_id`),   KEY `foobarbaz_FK_CATALOG_PRODUCT_ENTITY_WEEE_DISCOUNT_PRODUCT_ENTITY` (`entity_id`),   KEY `foobarbaz_FK_CATALOG_PRODUCT_ENTITY_WEEE_DISCOUNT_GROUP` (`customer_group_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ]

有没有办法添加大fks?谢谢你。

4

3 回答 3

8

不,它是硬编码到 MySQL 中的,请参阅文档(朝向页面底部)。但这与FK的名称无关。索引名称太长(最多 64 个字符):

`Identifier`                  `Maximum Length (characters)`
Database                      64
Table                         64
Column                        64
Index                         64
Constraint                    64
Stored Procedure or Function  64
Trigger                       64
View                          64
Alias                         256 (see exception following table)
Compound Statement Label      16
于 2010-12-16T19:57:19.500 回答
0

外键不是问题。这是钥匙的名字。我同意 MySQL,'foobarbaz_FK_CATALOG_PRODUCT_ENTITY_WEEE_DISCOUNT_PRODUCT_ENTITY'有点傻:)

您的名称中有两次“PRODUCT_ENTITY”。从放弃它开始:)

于 2010-12-16T19:58:42.813 回答
0

看起来这可能是一个错误。这是我找到的报告。我还没有看到它已被修补,但您可以重命名您的密钥,以便长度更短。

http://bugs.mysql.com/bug.php?id=13942

于 2011-10-06T12:59:12.020 回答