我在这里读到过类似的问题,但似乎与我的有所不同。

我开发了一个表单生成器插件,它在我的测试服务器和我拥有的另一个私人服务器上完美运行。问题是,当我将其上传到另一个客户 Magento 商店时,我无法“添加表单”,我收到以下错误消息:

SQLSTATE[42S02]:未找到基表或视图:第1146章 '123.gjd4_formbuilder_forms' 不存在,查询为:描述 `gjd4_formbuilder_forms`

我不明白为什么这样做,我的测试服务器 magentos 已更新 100%,对于我的客户也是如此。我该如何解决这个问题?

预先感谢大家,希望你们都有愉快的一天。

<?php

$installer = $this;

$installer->startSetup();

$installer->run("

-- DROP TABLE IF EXISTS {$this->getTable('formbuilder_forms')};
CREATE TABLE {$this->getTable('formbuilder_forms')} (
    `forms_index` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `title` VARCHAR(255) NOT NULL,
    `no_of_fields` INT(50) NULL DEFAULT '0',
    `status` SMALLINT(6) NOT NULL DEFAULT '2',
    `stores` TEXT NULL,
    `header_content` text NOT NULL ,
    `footer_content` text NOT NULL ,
    `success_msg` VARCHAR(255) NULL,
    `failure_msg` VARCHAR(255) NULL,
    `submit_text` VARCHAR(255) NULL,
    `in_menu` SMALLINT(6) NULL DEFAULT '0',
    `in_toplinks` SMALLINT(6) NULL DEFAULT '0',
    `title_image` VARCHAR(255) NULL,
    `bgcolor` VARCHAR(25) NULL DEFAULT '#fbfaf6',
    `created_time` DATETIME NULL DEFAULT NULL,
    `update_time` DATETIME NULL DEFAULT NULL,
    PRIMARY KEY (`forms_index`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    ");

$installer->run("

-- DROP TABLE IF EXISTS {$this->getTable('formbuilder_fields')};
CREATE TABLE {$this->getTable('formbuilder_fields')} (
    `fields_index` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `forms_index` INT(11) NOT NULL,     
    `status` SMALLINT(6) NOT NULL DEFAULT '0',
    `previous_group` VARCHAR(25) NOT NULL,
    `type` VARCHAR(25) NOT NULL,    
    `title` VARCHAR(255) NOT NULL,
    `field_id` INT(11) NOT NULL,
    `options` SMALLINT(6) NOT NULL DEFAULT '0',
    `max_characters` INT(11) NULL,
    `sort_order` INT(11) NULL,  
    `is_require` SMALLINT(6) NOT NULL DEFAULT '0',
    `is_delete` SMALLINT(6) NULL,   
    `file_extension` VARCHAR(255) NULL,
    `image_size_x` INT(11) NULL,
    `image_size_y` INT(11) NULL,    
    `previous_type` VARCHAR(25) NULL,
    `option_id` INT(11) NOT NULL DEFAULT '0',
    PRIMARY KEY (`fields_index`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    ");

$installer->run("

-- DROP TABLE IF EXISTS {$this->getTable('formbuilder_fields_options')};
CREATE TABLE {$this->getTable('formbuilder_fields_options')} (
    `options_index` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `option_id` INT(11) UNSIGNED NOT NULL,
    `fields_index` INT(11) NOT NULL,
    `is_delete` SMALLINT(6) NULL,   
    `title` VARCHAR(255) NOT NULL,
    `sort_order` INT(11) NULL,  
    PRIMARY KEY (`options_index`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    ");

$installer->run("

-- DROP TABLE IF EXISTS {$this->getTable('formbuilder_records')};
CREATE TABLE {$this->getTable('formbuilder_records')} (
    `records_index` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `forms_index` INT(11) NOT NULL,
    `customer` VARCHAR(255) NOT NULL,
    `fields_index` INT(11) NOT NULL,
    `options_index` VARCHAR(255) NULL,
    `value` text NULL,
    PRIMARY KEY (`records_index`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    ");

$installer->endSetup();
有帮助吗?

解决方案

如果该表不存在,则更新脚本可能由于不同原因而未运行。

首先使用此查询检查模块的版本:

select * from core_resource where code like '%your_module_here%';

如果版本与 config.xml 相同,则可能是未运行的原因。

如果您不使用更新脚本,那么这是您应该使用它们的一个很好的理由,但现在您可以手动创建表。要创建表,您可以在表所在的测试服务器中运行此查询:

SHOW CREATE TABLE gjd4_formbuilder_forms;

然后使用结果在其他服务器中创建表。之后刷新缓存并重试。

最后,正如 @tecjam 的评论中提到的,检查数据库前缀。

许可以下: CC-BY-SA归因
scroll top