LoginSignup
0
0

More than 3 years have passed since last update.

ECCUBEのMySQLでmtbテーブルを削除してしまった場合の対処法

Posted at

ことのはじまり

配送方法のひとつを削除しようと思い、マスタデータ管理から削除しようとしたがなぜか消せない。ならば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のバックアップは、ちゃんととっておこう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0