Php 自定义扩展名中的magento mysql安装文件
我在magento中有一个扩展,在安装时可以正常工作,但在我重置/重新启动扩展时(因为我添加了更多属性,只有在重新加载扩展时才会显示这些功能)通过删除数据库中的core_资源,我以前在另一个模块中使用过这种技术,效果很好,但是这个扩展给了我一个错误 所以我在整个站点上都遇到了巨大的错误,所以我检查了var/报告,它说扩展名的安装文件中有一个错误(因为它试图重新加载安装文件,但它必须与创建或覆盖第一次创建但未在数据库中删除的表有关,因为它们应该保留,因为保存的是数据,删除这些表将导致再次输入数据。) 因此,请参阅下面的安装文件,它似乎是导致问题的原因Php 自定义扩展名中的magento mysql安装文件,php,mysql,magento,Php,Mysql,Magento,我在magento中有一个扩展,在安装时可以正常工作,但在我重置/重新启动扩展时(因为我添加了更多属性,只有在重新加载扩展时才会显示这些功能)通过删除数据库中的core_资源,我以前在另一个模块中使用过这种技术,效果很好,但是这个扩展给了我一个错误 所以我在整个站点上都遇到了巨大的错误,所以我检查了var/报告,它说扩展名的安装文件中有一个错误(因为它试图重新加载安装文件,但它必须与创建或覆盖第一次创建但未在数据库中删除的表有关,因为它们应该保留,因为保存的是数据,删除这些表将导致再次输入数据。
<?php
$installer = $this;
/* @var $installer Mage_Core_Model_Resource_Setup */
$installer->startSetup();
$installer->run("
CREATE TABLE IF NOT EXISTS `customerpartner_aux` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`product_id` INT(11) NOT NULL,
`order_id` INT(11) NOT NULL,
`real_order_id` INT(11) NOT NULL,
`quantity` INT(11) NOT NULL,
`percent` DECIMAL(10,2) NOT NULL,
`amount_earned` DECIMAL(10,2) NOT NULL,
`amount_owed` DECIMAL(10,2) NOT NULL,
`cleared_at` DATETIME NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `{$this->getTable('customerpartner_entity')}` (
`entity_id` int(10) unsigned NOT NULL auto_increment,
`entity_type_id` smallint(8) unsigned NOT NULL default '0',
`attribute_set_id` smallint(5) unsigned NOT NULL default '0',
`website_id` smallint(5) unsigned default NULL,
`email` varchar(255) NOT NULL default '',
`group_id` smallint(3) unsigned NOT NULL default '0',
`increment_id` varchar(50) NOT NULL default '', `parent_id` int(10) unsigned NOT NULL default '0',
`store_id` smallint(5) unsigned default '0',
`created_at` datetime NOT NULL default '0000-00-00 00:00:00',
`updated_at` datetime NOT NULL default '0000-00-00 00:00:00',
`is_active` tinyint(1) unsigned NOT NULL default '1',
PRIMARY KEY (`entity_id`),
KEY `FK_CUSTOMERPARTNER_ENTITY_STORE` (`store_id`),
KEY `IDX_ENTITY_TYPE` (`entity_type_id`),
KEY `IDX_AUTH` (`email`,`website_id`),
KEY `FK_CUSTOMERPARTNER_WEBSITE` (`website_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Customer Entityies' AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `{$this->getTable('customerpartner_entity_datetime')}` (
`value_id` int(11) NOT NULL auto_increment,
`entity_type_id` smallint(8) unsigned NOT NULL default '0',
`attribute_id` smallint(5) unsigned NOT NULL default '0',
`entity_id` int(10) unsigned NOT NULL default '0',
`value` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`value_id`),
KEY `FK_CUSTOMERPARTNER_DATETIME_ENTITY_TYPE` (`entity_type_id`),
KEY `FK_CUSTOMERPARTNER_DATETIME_ATTRIBUTE` (`attribute_id`),
KEY `FK_CUSTOMERPARTNER_DATETIME_ENTITY` (`entity_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `{$this->getTable('customerpartner_entity_decimal')}` (
`value_id` int(11) NOT NULL auto_increment,
`entity_type_id` smallint(8) unsigned NOT NULL default '0',
`attribute_id` smallint(5) unsigned NOT NULL default '0',
`entity_id` int(10) unsigned NOT NULL default '0',
`value` decimal(12,4) NOT NULL default '0.0000',
PRIMARY KEY (`value_id`),
KEY `FK_CUSTOMERPARTNER_DECIMAL_ENTITY_TYPE` (`entity_type_id`),
KEY `FK_CUSTOMERPARTNER_DECIMAL_ATTRIBUTE` (`attribute_id`),
KEY `FK_CUSTOMERPARTNER_DECIMAL_ENTITY` (`entity_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `{$this->getTable('customerpartner_entity_int')}` (
`value_id` int(11) NOT NULL auto_increment,
`entity_type_id` smallint(8) unsigned NOT NULL default '0',
`attribute_id` smallint(5) unsigned NOT NULL default '0',
`entity_id` int(10) unsigned NOT NULL default '0',
`value` int(11) NOT NULL default '0',
PRIMARY KEY (`value_id`),
KEY `FK_CUSTOMERPARTNER_INT_ENTITY_TYPE` (`entity_type_id`),
KEY `FK_CUSTOMERPARTNER_INT_ATTRIBUTE` (`attribute_id`),
KEY `FK_CUSTOMERPARTNER_INT_ENTITY` (`entity_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `{$this->getTable('customerpartner_entity_text')}` (
`value_id` int(11) NOT NULL auto_increment,
`entity_type_id` smallint(8) unsigned NOT NULL default '0',
`attribute_id` smallint(5) unsigned NOT NULL default '0',
`entity_id` int(10) unsigned NOT NULL default '0',
`value` text NOT NULL,
PRIMARY KEY (`value_id`),
KEY `FK_CUSTOMERPARTNER_TEXT_ENTITY_TYPE` (`entity_type_id`),
KEY `FK_CUSTOMERPARTNER_TEXT_ATTRIBUTE` (`attribute_id`),
KEY `FK_CUSTOMERPARTNER_TEXT_ENTITY` (`entity_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `{$this->getTable('customerpartner_entity_varchar')}` (
`value_id` int(11) NOT NULL auto_increment,
`entity_type_id` smallint(8) unsigned NOT NULL default '0',
`attribute_id` smallint(5) unsigned NOT NULL default '0',
`entity_id` int(10) unsigned NOT NULL default '0',
`value` varchar(255) NOT NULL default '',
PRIMARY KEY (`value_id`),
KEY `FK_CUSTOMERPARTNER_VARCHAR_ENTITY_TYPE` (`entity_type_id`),
KEY `FK_CUSTOMERPARTNER_VARCHAR_ATTRIBUTE` (`attribute_id`),
KEY `FK_CUSTOMERPARTNER_VARCHAR_ENTITY` (`entity_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ALTER TABLE `{$this->getTable('customerpartner_entity')}`
ADD CONSTRAINT `FK_CUSTOMERPARTNER_ENTITY_STORE` FOREIGN KEY (`store_id`) REFERENCES `{$this->getTable('core_store')}` (`store_id`) ON DELETE SET NULL ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERPARTNER_WEBSITE` FOREIGN KEY (`website_id`) REFERENCES `{$this->getTable('core_website')}` (`website_id`) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE `{$this->getTable('customerpartner_entity_datetime')}`
ADD CONSTRAINT `FK_CUSTOMERPARTNER_DATETIME_ATTRIBUTE` FOREIGN KEY (`attribute_id`) REFERENCES `{$this->getTable('eav_attribute')}` (`attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERPARTNER_DATETIME_ENTITY` FOREIGN KEY (`entity_id`) REFERENCES `{$this->getTable('customerpartner_entity')}` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERPARTNER_DATETIME_ENTITY_TYPE` FOREIGN KEY (`entity_type_id`) REFERENCES `{$this->getTable('eav_entity_type')}` (`entity_type_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `{$this->getTable('customerpartner_entity_decimal')}`
ADD CONSTRAINT `FK_CUSTOMERPARTNER_DECIMAL_ATTRIBUTE` FOREIGN KEY (`attribute_id`) REFERENCES `{$this->getTable('eav_attribute')}` (`attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERPARTNER_DECIMAL_ENTITY` FOREIGN KEY (`entity_id`) REFERENCES `{$this->getTable('customerpartner_entity')}` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERPARTNER_DECIMAL_ENTITY_TYPE` FOREIGN KEY (`entity_type_id`) REFERENCES `{$this->getTable('eav_entity_type')}` (`entity_type_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `{$this->getTable('customerpartner_entity_int')}`
ADD CONSTRAINT `FK_CUSTOMERPARTNER_INT_ATTRIBUTE` FOREIGN KEY (`attribute_id`) REFERENCES `{$this->getTable('eav_attribute')}` (`attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERPARTNER_INT_ENTITY` FOREIGN KEY (`entity_id`) REFERENCES `{$this->getTable('customerpartner_entity')}` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERPARTNER_INT_ENTITY_TYPE` FOREIGN KEY (`entity_type_id`) REFERENCES `{$this->getTable('eav_entity_type')}` (`entity_type_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `{$this->getTable('customerpartner_entity_text')}`
ADD CONSTRAINT `FK_CUSTOMERPARTNER_TEXT_ATTRIBUTE` FOREIGN KEY (`attribute_id`) REFERENCES `{$this->getTable('eav_attribute')}` (`attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERPARTNER_TEXT_ENTITY` FOREIGN KEY (`entity_id`) REFERENCES `{$this->getTable('customerpartner_entity')}` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERPARTNER_TEXT_ENTITY_TYPE` FOREIGN KEY (`entity_type_id`) REFERENCES `{$this->getTable('eav_entity_type')}` (`entity_type_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `{$this->getTable('customerpartner_entity_varchar')}`
ADD CONSTRAINT `FK_CUSTOMERPARTNER_VARCHAR_ATTRIBUTE` FOREIGN KEY (`attribute_id`) REFERENCES `{$this->getTable('eav_attribute')}` (`attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERPARTNER_VARCHAR_ENTITY` FOREIGN KEY (`entity_id`) REFERENCES `{$this->getTable('customerpartner_entity')}` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_CUSTOMERPARTNER_VARCHAR_ENTITY_TYPE` FOREIGN KEY (`entity_type_id`) REFERENCES `{$this->getTable('eav_entity_type')}` (`entity_type_id`) ON DELETE CASCADE ON UPDATE CASCADE;
");
$installer->installEntities();
$installer->endSetup();
当您从core_资源中删除模块名称时,下次加载站点时,它将尝试创建数据库,因为magento认为该模块确实存在(并且您将得到一个站点错误)。您可以做的是创建更新(更改该模块的版本号)
请参见当您从core_资源中删除模块名称时,下次加载站点时,它将尝试创建数据库,因为magento认为该模块确实存在(并且您将得到一个站点错误)。您可以做的是创建更新(更改该模块的版本号)请看Ok,谢谢R.S会给我这个机会,因为我可能根本不需要删除核心资源,就像你说的,只需集成升级脚本。我通常做的是在开发环境中创建我的新模块,根据需要添加表/字段。一旦我的模块按需工作,我就创建我的安装/更新脚本。