#ことのはじまり
配送方法のひとつを削除しようと思い、マスタデータ管理から削除しようとしたがなぜか消せない。ならばPHPMyAdminから直接消そう!と思い削除ボタンを押したものの、間違えてテーブルごと消去してしまった。配送方法のデータが丸々消えたせいで商品ページも管理画面もエラーが出るし、MySQLのバックアップはとっていないし...
#対処法
EC-CUBEのマスタデータは外部キー制約というものに基づいて作られています。例えば配送方法のテーブルであるmtb_sale_typeでであれば、それを参照して商品データであるdtb_productsにmtb_sale_type_idというカラムが存在していると思います。このような状態で、GUIから存在しない(僕の場合は消してしまったので)mtb_sale_typeテーブルを作成しようとしても
###「外部キー制約を追加できません。」
と出てしまい作成できないのです。この場合、「外部キー制約を無視」してクエリから制作する必要があります。
外部キー制約を無視するためには以下のクエリを使用します。
SET FOREIGN_KEY_CHECKS=0;
最終的に書いたクエリは以下の通りです。
SET FOREIGN_KEY_CHECKS=0;
create table 'mtb_sale_type' (
'id' smallint(5) UNSIGNED NOT NULL,
'name' varchar(255) NOT NULL,
'sort_no' smallint(5) UNSIGNED NOT NULL,
'discriminator_type' varchar(255) NOT NULL
PRIMARY KEY(id);
)
DEFAULT CHARSET=utf8mb4_general_ci
これで元通りのテーブルを作ることができます。あとは「挿入」からもとあったデータを追加していくだけです。
#総括
MySQLのバックアップは、ちゃんととっておこう!