Pregunta

He leído sobre problemas similares aquí, pero parece ser de alguna manera diferente al mío.

Desarrollé un complemento de creación de formularios y funcionó perfectamente en mi servidor de prueba y en otro servidor privado que tengo.El problema es que, cuando subo esto a la tienda Magento de otro cliente, no puedo "agregar un formulario", aparece el siguiente mensaje de error:

ESTADOSQL[42S02]:Tabla base o vista no encontrada:1146 La tabla '123.gjd4_formbuilder_forms' no existe, la consulta fue:DESCRIBIR `gjd4_formbuilder_forms`

No entiendo por qué hace esto, los magentos de mi servidor de prueba están actualizados al 100% y lo mismo para mi cliente.¿Cómo soluciono este problema?

Gracias de antemano chicos, espero que todos tengan un buen día.

<?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();
¿Fue útil?

Solución

Si la tabla no está allí, es posible que el script de actualización no se haya ejecutado por diferentes motivos.

Primero verifique con esta consulta la versión de su módulo:

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

Si la versión es la misma que config.xml, entonces esa podría ser la razón por la que no se ejecutó.

Si no utiliza scripts de actualización, esta es una buena razón para utilizarlos, pero por ahora puede crear la tabla manualmente.Para crear la tabla, puede ejecutar esta consulta en su servidor de prueba donde existe su tabla:

SHOW CREATE TABLE gjd4_formbuilder_forms;

Luego use el resultado para crear la tabla en su otro servidor.Después de eso, vacíe el caché y vuelva a intentarlo.

Finalmente, como se menciona en el comentario de @tecjam, verifique los prefijos db.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top