【问题标题】:MySQL Big FK identifierMySQL Big FK 标识符
【发布时间】:2011-05-26 18:27:29
【问题描述】:

我正在尝试创建一个 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? 谢谢。

【问题讨论】:

    标签: php mysql foreign-keys foreign-key-relationship restriction


    【解决方案1】:

    不,它是硬编码到 MySQL 中的,请参阅the docs(靠近页面底部)。但这与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
    

    【讨论】:

      【解决方案2】:

      外键不是问题。它是密钥的名称。我同意 MySQL,'foobarbaz_FK_CATALOG_PRODUCT_ENTITY_WEEE_DISCOUNT_PRODUCT_ENTITY' 有点傻:)

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

      【讨论】:

      • 你最好删除你的评论,因为PRODUCT_ENTITY被写多少次都没有关系,只要它最多有64个字符(mysql设置的限制)。
      • 大声笑,不,不,不……我非常认真地坚持认为 MySQL 检查实际名称并根据自己的神秘想法和幻想决定某些名称显然是“坏的”。此外(但显然不那么重要和事实正确),我的回答提醒人们,有些问题最好通过不首先引起它们来解决。
      • Mysql 正在检查名称,但出于其他原因。不检查一个键是否包含子字符串两次。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多