【发布时间】:2012-01-31 14:03:55
【问题描述】:
我在运行CREATE TABLE 的Magento PHP 文件中遇到以下错误:
SQLSTATE[42000]: Syntax error or access violation: 1069 Too many keys specified; max 64 keys allowed
触发它的代码是:
CREATE TABLE IF NOT EXISTS {$this->getTable('attributesplash_page')} (
`page_id` int(11) unsigned NOT NULL auto_increment,
`option_id` int (11) unsigned NOT NULL default 0,
`store_id` smallint(5) unsigned NOT NULL default 0,
`display_name` varchar(255) NOT NULL default '',
`image` varchar(255) NOT NULL default '',
`short_description` varchar(255) NOT NULL default '',
`description` TEXT NOT NULL default '',
`url_key` varchar(180) NOT NULL default '',
`page_title` varchar(255) NOT NULL default '',
`meta_description` varchar(255) NOT NULL default '',
`meta_keywords` varchar(255) NOT NULL default '',
`display_mode` varchar(40) NOT NULL default 'PRODUCTS',
`cms_block` int(11) unsigned NOT NULL default 0,
`is_enabled` int(1) unsigned NOT NULL default 1,
PRIMARY KEY (`page_id`),
KEY `FK_OPTION_ID_SPLASH_PAGE` (`option_id`),
CONSTRAINT `FK_OPTION_ID_SPLASH_PAGE` FOREIGN KEY (`option_id`) REFERENCES `{$this->getTable('eav_attribute_option')}` (`option_id`) ON DELETE CASCADE ON UPDATE CASCADE,
KEY `FK_STORE_ID_SPLASH_PAGE` (`store_id`),
CONSTRAINT `FK_STORE_ID_SPLASH_PAGE` FOREIGN KEY (`store_id`) REFERENCES `{$this->getTable('core_store')}` (`store_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='AttributeSplash: Page';
ALTER TABLE {$this->getTable('attributesplash_page')} ADD UNIQUE (option_id, store_id);
在我看来,它似乎只在其中添加了 3 个键。额外的来自哪里?
研究问题只是发现我需要减少用于键的项目,但我看不到代码中多余的项目在哪里。
还有其他有用的信息吗?
【问题讨论】: