テスト環境のデータベースにアクセス出来なくるphpMyAdminとの格闘

PHP

先に申し上げておくと、データ復旧出来ませんでした、惨敗です。_(┐「ε:)_

SQLの知識が乏しい自分に、この状況を変える手立てもスキルもなく、ただ失ったデータたちを眺めるだけしか出来なかったです。同じ間違いをしないように書き留めて置きたいとおもいます。

突然訪れたSQLさんの反乱

ローカルのテスト環境でPHPを編集している際に起きました、SQLが反応しなくなるといった事態ですね。phpMyAdminで中を覗こうとしたらログイン事態出来ないし。

環境はXAMPPでWindows上に構築した簡単なもです。

phpMyAdminログインできない

Google先生だよりにインストール先の xampp\mysql\data 内にある「ibdata1」「ib_logfile1」「ib_logfile0」ファイルを消したりしてログイン出来るようになりました。

ただ、テーブルを確認しようとしただけで#1932エラーが出て操作を全く受け付けてくれない状態……こりゃ困った。

インポート操作も出来ないことから、直接dataフォルダにあるファイルをバックアップし、XAMPPを入れ直す作業から始めるも、構成情報まで見るところまで行けてそれ以上操作が全く受け付けてくれなかった。

照合順序 使用中になっていて復旧を試みるも効果なし。

海外のフォーラムも探してみましたが、具体的な解決さくが見いだせず時間ばかりが過ぎてしまったので断念しました。

復旧作業と組み立て直し

データそのものは、外部サーバーに保管してあるのを引っ張りだして、テーブル構成とかを組み立て直してインポートしてなんとか復元できました。ついでに無駄に増やしたテーブル削減したり出来てよかったのかな….

バックアップは大切だよね。

HTMLやPHPファイルはDropboxに常にアップしてあるので大丈夫なんですが、SQLデータだけはどうしよもないですね、前にDropboxにSQLデータをバックアップなどの記事を読んでやってみたのですが、データ処理中にDropboxさんにファイルロック掛けられちゃって、大量のデータをINSETしたりする作業の妨げになるし、楽な方法って無いもんですかね。

原因とやらかしたこと

PHPで連想配列のキー名とSQLのテーブル名が同じものを、INSETするクラスが書いてあり、ローカルのデータ処理ではそのクラスを使ってデータの処理をしていました。

$data = array(
‘0’ = > array(‘item’=>’ワンピース’,’img’=>’2567.jpg’), ‘1’ = > array(‘item’=>’魔法使いの嫁’,’img’=>’2568.jpg’), ‘2’ = > array(‘item’=>’ゴールデンカムイ’,’img’=>’2569.jpg’),   /*---------------以下省略たくさん-----------------------*/ );

0~順々にINSET文に突っ込む感じのクラスですね。

試しに新しい検索を作ろうかと思いいたって、テキストエリアに改行で入れたキーワードをOR検索するものを作っていたら誤爆しました。

上記の様なテキストエリアの内容を 配列で受け取ってINSET文に置き換えるPHPを作っていたら

$data = array(‘ワンピース’,’魔法使いの嫁’,’3月のライオン’,’ゴールデンカムイ’);

になるところを何をおもったか、ローカルサーバーの配列置き換えをイジってしまい、多分ですがはじめに出した配列が

$data = array(
     ‘0’ => array(‘item’=>’ワンピース’),
     ‘1’ => array(‘img’=>’2567.jpg’),
     ‘2’ => array(‘item’=>’魔法使いの嫁’),
     /*---------------以下省略たくさん-----------------------*/
);

INSET文が10倍ぐらいに膨れ上がった上にPCがフリーズしたところをでデータが壊れたようです。趣味でやってるド素人がやらかしました_(┐「ε:)_

結局テキストエリアのOR検索は、スマフォでむちゃくちゃ使いづらいことが解りお蔵入だし、踏んだり蹴ったりの結末でした。

コメント

タイトルとURLをコピーしました