Frage

Ich habe hier über ähnliche Probleme gelesen, aber es scheint irgendwie anders zu sein als bei mir.

Ich habe ein Formular-Builder-Plugin entwickelt, das auf meinem Testserver und einem anderen privaten Server, den ich habe, perfekt funktioniert hat.Das Problem ist, wenn ich dies in den Magento-Shop eines anderen Kunden hochlade, kann ich kein "Formular hinzufügen". Ich erhalte die folgende Fehlermeldung:

SQL-STATUS[42S02]:Basistabelle oder -ansicht nicht gefunden:1146 Tabelle '123.gjd4_formbuilder_forms' existiert nicht, Abfrage war:BESCHREIBEN SIE `gjd4_formbuilder_forms`

Ich verstehe nicht, warum das so ist, meine Testserver-Magentos sind zu 100% aktualisiert und das Gleiche gilt für meinen Kunden.Wie löse ich dieses Problem?

Danke im Voraus Jungs, ich hoffe, ihr habt alle einen schönen Tag.

<?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();
War es hilfreich?

Lösung

Wenn die Tabelle nicht vorhanden ist, kann es sein, dass das Aktualisierungsskript aus verschiedenen Gründen nicht ausgeführt wurde.

Überprüfen Sie zuerst mit dieser Abfrage die Version Ihres Moduls:

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

Wenn die Version mit der Konfiguration identisch ist.xml dann könnte das der Grund sein, warum nicht ausgeführt wurde.

Wenn Sie keine Aktualisierungsskripte verwenden, ist dies ein guter Grund, warum Sie sie verwenden sollten, aber im Moment können Sie die Tabelle manuell erstellen.Um die Tabelle zu erstellen, können Sie diese Abfrage auf Ihrem Testserver ausführen, auf dem Ihre Tabelle vorhanden ist:

SHOW CREATE TABLE gjd4_formbuilder_forms;

Verwenden Sie dann das Ergebnis, um die Tabelle auf Ihrem anderen Server zu erstellen.Danach leeren Sie den Cache und versuchen Sie es erneut.

Schließlich, wie im Kommentar von @tecjam erwähnt, überprüfen Sie die DB-Präfixe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top