フィールドに入っている値で判別していろいろやりたいときにはCASEを使うと便利でした。例えば、値によってORDER BYで並び替えをしたい場合など。
タグ: MySQL
MySQLによるオンラインバックアップについて。バックアップにはmysqldumpコマンドを使いますが、単純にバックアップといえども、リストア(復元)する時のことも考えてないといけません。
Webエンジニアのためのデータベース技術[実践]入門であらためてデータベースを学びなおしているところです。負荷が少ないサービスだと、そのままの設定でも動きますが、利用者が膨大に増えた場合はそうもいっていられません。今回はその中のMySQL設定ファイルmy.cnfについて。
プログラムは目的の動作を実現するツールですが、そのツールが外部から攻撃・悪用されないように、セキュリティ対策を講じておかなければなりません。今回は、古くから存在するSQLインジェクションについての対策をまとめました。
実は僕が10年前くらいに作ったWebシステムのいくつかは、データベースにBLOB形式でバイナリファイルを格納していました。データベース内に直接画像を保存することで、検索と連動して処理しやすいようにしたつもりでした。
しかし、実際に運用がはじまるとそんなことはありませんでした。むしろ、データが増えてくるほどに危険性が増してきます。データベースのバックアップデータも肥大化し、SQLでバックアップをとっても、ファイルが数GBともなると、直接ファイルを開いて確認することはできませんし、復元する時にとんでもない労力が発生する可能性があります。
ということから、これまでデータベースに保存していた画像を取り出して、通常の画像ファイルに変更して保存しなおすスクリプトを作りました。それぞれの環境によって適宜変更が必要かと思いますし、流用の際は自己責任でお願いします。
例えばWebサーバーで運用しているデータベースのバックアップデータを、ローカル環境に反映させたい場合、phpMyAdminのインポート機能を使うと便利です。私の場合、MAMPで構築していますが、MAMPはMacにPHP/MySQLをかんたんにインストールして環境を構築できるので重宝しています。
しかし、いざインポートをしようとしたら、「MySQL server has gone away」というエラーが。タイムアウトでも出ますが、今回はインポートしようとしているクエリの数が多すぎたのが原因のようです。
みなさんはデータベースの管理・運用はどのようにしていますか?私はWebシステムを作るとき、PHP+MySQLの組み合わせで作っていて、DBの管理にはPHPMyAdminを使っていました。
システムを作るとき、データベースにデータがちゃんと入っているか調べたり、不要なデータを消したり、新しくテーブルを作ったりするとき、コマンドでもできますが、見辛くてしょうがありません。
ということで、GUIベースのソフトがほしくなりますよね。それで、MySQLの管理はこれまでブラウザでデータベースの管理が出来るPHPMyAdminを使ってきました。しかし、最近になってMacアプリで、もっと使いやすいソフトを知ったのです。
もともとMySQLを使っているPHPのシステムで、PostgreSQLに変更せざるを得ないケースが出た場合の対処方法についてのまとめです。基本的にPHPが優秀なので、変更も簡単でした。