Php MySQL大FK标识符
我正在尝试创建一个fk,但MySQL不允许它Php MySQL大FK标识符,php,mysql,foreign-keys,foreign-key-relationship,restriction,Php,Mysql,Foreign Keys,Foreign Key Relationship,Restriction,我正在尝试创建一个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
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; ]
有没有办法添加大FK?
谢谢。我对此表示怀疑。您可以尝试更改系统表外键的数据类型。然而,我以前从未尝试过更改系统表,因此不知道如果可能的话是否会有任何复杂情况。我对此表示怀疑。您可以尝试更改系统表外键的数据类型。但是,我以前从未尝试过更改系统表,所以即使可能,也不知道是否会有任何复杂情况。不,它是硬编码到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
不,它是硬编码到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
外键不是问题所在。这是钥匙的名字。我同意MySQL的说法,“foobarbaz\u FK\u CATALOG\u PRODUCT\u ENTITY\u WEEE\u DISCOUNT\u PRODUCT\u ENTITY”有点傻:
名称中有两个产品实体。首先删除以下内容:外键不是问题所在。这是钥匙的名字。我同意MySQL的说法,“foobarbaz\u FK\u CATALOG\u PRODUCT\u ENTITY\u WEEE\u DISCOUNT\u PRODUCT\u ENTITY”有点傻:
名称中有两个产品实体。首先删除以下内容:看起来这可能是一个bug。这是我找到的报告。我没有看到它被修补过,但你可以重命名你的钥匙,这样长度就更短了
看起来这可能是个bug。这是我找到的报告。我没有看到它被修补过,但你可以重命名你的钥匙,这样长度就更短了
你最好删除你的评论,因为不管写了多少次PRODUCT_实体,只要它最多有64个字符,这是mysql.LOL设置的限制,没有。。。我非常认真地坚持MySQL检查实际名称的信念,并根据其神秘的奇思妙想决定某些名称显然是不好的。除此之外,我的回答显然不那么重要,也不那么真实,我的回答提醒人们,一些问题最好的解决方法是首先不要引起它们。Mysql正在检查名称,但还有其他原因。不要两次检查一个键是否包含子字符串。你最好删除你的注释,因为不管写了多少次PRODUCT_实体,只要它的最大长度为mysql.LOL设置的64个字符,不不不。。。我非常认真地坚持MySQL检查实际名称的信念,并根据其神秘的奇思妙想决定某些名称显然是不好的。除此之外,我的回答显然不那么重要,也不那么真实,我的回答提醒人们,一些问题最好的解决方法是首先不要引起它们。Mysql正在检查名称,但还有其他原因。不检查键是否包含子字符串两次。您的答案与OP问题无关。您的答案与OP问题无关。