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」が2回含まれています。それをドロップすることから始めます:)

于 2010-12-16T19:58:42.813 に答える
0

これはバグの可能性があるようです。見つけたレポートはこちら。まだパッチが適用されていることはわかりませんでしたが、キーの名前を変更して長さを短くすることができます。

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

于 2011-10-06T12:59:12.020 に答える