MySQLの巨大なファイルをインポートする

2012/12/20 | MySQL

phpMyAdminでMySQLデータをエクスポートする場合、ダンプファイルの容量を心配する必要はあまりない。数百MBとかでも特に考えることもなくダウンロードできていた。しかし、問題はインポート。phpMyAdminではファイルをアップロードしてインポートする形式になるのだが、PHPのアップロード制限があったり、Apacheのアップロード制限があったり、といろいろ制約が多い。

サーバにデータを転送しておいてコマンドラインからインポート、という手が使えればもちろん問題ないのだけれど、安価なレンタルサーバではシェルログインできないことがほとんどだ。

そんな時に便利なのがBigDumpだ。このスクリプトはPHP で書かれていて、このファイルの必要箇所を書き換えてサーバにアップロードし、データもファイルと同じ階層にアップロード、さらにスクリプトへブラウザからアクセスして指示に従えば、データ量が多くても(数百MB程度でも)問題なくインポートすることができた。

実際どのくらいの容量を想定すれば良いのか、という問題はさておき、個人商店のようなプログラマが小・中規模のサイトで1GBを超えるデータを扱うような可能性は滅多にないので、便利に使えるツールだと思う。

MySQL Workbench

2012/06/06 | MySQL

ある作業でカラムの型としてDECIMAL型を選んだ。型の設定でDECIMAL(7,4)とすべきところをDECIMAL(3,4)としてしまっていたけどエラーにならなかった。当然そのままphpMyAdminに流すとエラー。

厳密なチェックがないっていうのは結構ありそうな感じかな。

MySQL WorkbenchからphpMyAdminでエラー

2012/06/03 | MySQL

MySQLを使うとき、データベースの設計はMySQL Workbenchを使用している。非常に優秀なツールで、テーブル設計はもちろんER図が描けて、そこで設定したリレーションもデータベース設計に直接反映される。まだ使い始めてそれほど立っていないのだけれど、作成した情報からSQL文を吐き出して、それをphpMyAdminから投入すればデータベースが一発で作成されるので、とても便利。

しかし今日、初めて面倒が発生した。DB設計したファイルを更新するためにMySQL Workbenchでオープンし、いつものようにカラムとテーブルの整理をしてリレーションを貼り直し、SQL出力。そして出力したSQLを使ってphpMyAdminに流し込んだのだが、これがエラーとなり途中で止まってしまう。今までこんなことなかったのに。

今までは一度もそんなことなかったし、構造を変更したテーブルで問題が発生しているようなので、明らかに作業した内容に問題がありそう・・・でもわからない。で、しばしMySQL Workbenchの画面を眺めてみる・・・。

わかりました。リレーションの貼り元のカラムと、貼り先のカラムで、どちらも型はintegerだけれど、一方はunsigned属性が付加されているが、もう片方では付加されていない。「あっ」、思いこれを修正して吐き出したSQL文を使えば、今までどおり一発でSQL文が通るようになった。

いや、まぁ自分のミスではあるのだが、そういう一般に発生しやすいミスを事前に見つけて警告してくれるツールであった欲しかったなーと思った。とはいえ便利なツールなので、今後も使い続ける予定。さらなるバージョンアップに期待する。

MySQLでrootのパスワードを設定

2012/05/28 | MySQL

何回やっても忘れるのでメモ。

SET PASSWORD FOR root@localhost=PASSWORD(‘hoge‘);

ほんっと、覚えられない。

mysqldumpと復元

2011/08/24 | MySQL

何回やってもその都度忘れるのでメモ。

mysqldump db_name > dump.sql

mysql db_name < dump.sql

そしてこのエラーも毎回悩む。

ERROR 1005 at line 23: Can’t create table ‘./masters/answers.frm’ (errno: 150)

mysqldumpでは、innoDBで外部制約を使っていたとしても、それを考慮したSQL文とはなっていない(子テーブルの記述が親テーブルより先にくることがある)。結果として上記のようなエラーになる。

これを回避するには、リストアする前のSQLファイルに以下の1行を加えておく。

SET FOREIGN_KEY_CHECKS=0;

覚えられない。若い頃は「調べればわかるものは覚えない」というポリシーだったが、何度か使うと覚えていた。しかし最近はポリシーこそ変わらないけれど、一向に覚えられない。

老いた。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net