Question

J'ai lu des problèmes similaires ici, mais cela semble être différent du mien.

J'ai développé un plugin Form Builder et il a parfaitement fonctionné sur mon serveur de test et sur un autre serveur privé que j'ai.Le problème est que lorsque je télécharge ceci sur la boutique Magento d'un autre client, je ne peux pas "ajouter un formulaire". J'obtiens le message d'erreur suivant :

ÉTAT SQL[42S02] :Table ou vue de base introuvable :1146 La table '123.gjd4_formbuilder_forms' n'existe pas, la requête était :DÉCRIRE `gjd4_formbuilder_forms`

Je ne comprends pas pourquoi cela fait cela, mes magentos de serveur de test sont mis à jour à 100% et pareil pour mon client.Comment puis-je résoudre ce problème ?

Merci d'avance les gars, j'espère que vous passez tous une bonne journée.

<?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();
Était-ce utile?

La solution

Si le tableau n'est pas là, il est possible que le script de mise à jour ne se soit pas exécuté pour différentes raisons.

Vérifiez d'abord avec cette requête la version de votre module :

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

Si la version est la même que celle de config.xml, cela pourrait être la raison pour laquelle l'exécution n'a pas eu lieu.

Si vous n'utilisez pas de scripts de mise à jour, c'est une bonne raison pour laquelle vous devriez les utiliser, mais pour l'instant, vous pouvez créer la table manuellement.Pour créer la table, vous pouvez exécuter cette requête sur votre serveur de test où existe votre table :

SHOW CREATE TABLE gjd4_formbuilder_forms;

Utilisez ensuite le résultat pour créer la table sur votre autre serveur.Après cela, videz le cache et réessayez.

Enfin, comme mentionné dans le commentaire de @tecjam, vérifiez les préfixes de la base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top