MySQL Big FK идентификатор - PullRequest
       22

MySQL Big FK идентификатор

1 голос
/ 16 декабря 2010

Я пытаюсь создать 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?Спасибо.

Ответы [ 4 ]

6 голосов
/ 16 декабря 2010

Нет, он жестко запрограммирован в MySQL, см. документы (внизу страницы). Но это никак не связано с именем ФК. Это слишком длинное имя индекса (не более 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
1 голос
/ 16 декабря 2010

Внешний ключ не проблема. Это имя ключа. Я согласен с MySQL, 'foobarbaz_FK_CATALOG_PRODUCT_ENTITY_WEEE_DISCOUNT_PRODUCT_ENTITY' немного глупо:)

У вас дважды в названии "PRODUCT_ENTITY". Начните с того, что опустите:)

1 голос
/ 16 декабря 2010

Я сомневаюсь в этом. Вы можете попытаться изменить тип данных системной таблицы для внешних ключей. Однако я никогда не пытался изменить системные таблицы, поэтому не знаю, будут ли какие-либо сложности, если это вообще возможно.

0 голосов
/ 06 октября 2011

Похоже, это ошибка.Вот отчет, который я нашел.Я еще не видел, чтобы он был исправлен, но вы можете просто переименовать свои ключи, чтобы длина была меньше.

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

...