拡張SQLSTATE[42S02]:ベーステーブルまたはビューが見つかりません:[定休日]
質問
私はここで同様の問題について読みましたが、それは私のものとはどういうわけか違うようです。
私はフォームビルダープラグインを開発しましたが、それは私のテストサーバーと私が持っている別のプライベートサーバーで完璧に機能しました。問題は、これを別の顧客Magentoショップにアップロードすると、「フォームを追加」できないため、次のエラーメッセージが表示されることです:
SQLSTATE[42S02]:ベーステーブルまたはビューが見つかりません:1146123.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のコメントで述べたように、db接頭辞を確認してください。