Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL大FK标识符_Php_Mysql_Foreign Keys_Foreign Key Relationship_Restriction - Fatal编程技术网

Php MySQL大FK标识符

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

我正在尝试创建一个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; ]
有没有办法添加大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问题无关。