役に立つかもしれないBlog(MySQL)

MySQL関連の執筆記事リストです。 役に立つかもしれないBlog全体のRSSはこちらです。

MySQLサーバーでクエリ履歴をログファイルに保存する方法

なんだか、ネットで調べていると情報があちこちに分散されているようなので、ここらで簡単にまとめておきたいと思います。

MySQLで「ALTER TABLE ... DROP INDEX」すると「Error 150」が出る問題

MySQLでリレーションを作りながらインデックスをホイホイと作っていると陥ってしまうエラーを紹介します。 このエラーはテーブルのインデックスを削除したい場合にできなくなるというもの。

タグ機能を実現するための便利なデータベース設計を3つ紹介

単純な設計からやや複雑な設計まで3種類の事例を挙げて、それぞれのメリットやデメリットを紹介してあります。 英語が苦手な人向けに日本語で紹介しましょう。

さくらのVPSのPHP+MySQLを最新のものにアップデート。

さくらのVPSではyumをインストールしてPHPを入れることができますが、標準のリポジトリ(パッケージデータベース)ですとPHP5.1.6という古いバージョンが入ってしまいます。 そこで最新バージョンが入るように変えてみましょう。 同様にMySQLも最新版にしてみます。

JavaScriptでDATETIME型の日付を得る方法

JavaScriptで直接PHP+MySQLのスクリプトとやり取りを行いたい場合に日付情報をDATETIME型に整形して送信したい場合があります。 その時の方法をご紹介します。

MySQL(innoDB)でリレーション設定時に「インデックスは設定されていません」エラー

phpMyAdminでテーブルのリレーション設定をしていて、DELETE ON CASCADEの設定をやっていたところ、ちゃんとインデックスも張っているはずなのに「インデックスは設定されていません」というエラーが出てしまいました。

MySQLでRANDOMな数値を得る方法

MySQLでたまにやりたいことの一つに「一定の範囲の数値でランダムな値を作りたい」というのがあります。 データを挿入する場合だったり、SELECTで取り出す際にランダムに取り出すとかね。

MySQLのunique属性で大文字や小文字が区別されない問題を解決

MySQLでunique属性をつけても、アルファベットの大文字と小文字を区別しないせいでエラーが出てしまう場合があります。 今回はその解決法をご紹介。

MySQLの「Can't create/write to file '/tmp/#sql****.MYI'」エラーを解決する!

「急いで解決法を教えてくれ!」という人がほとんどでしょうから、まずは結論から。

MySQLで画像を格納時にエラーが発生する3つの要注意ポイント

最近、データベースもお手軽に利用できるようになって、私の周りでも画像をMySQLのようなデータベースに格納する事例が増えてきました。 そこで、MySQLに画像を保存していく場合にエラーになりやすいポイントを3つ挙げておきます。

MySQLでHAVING指定したら「Unknown column ... in 'having clause'」エラー

ん! あなたは...ズバリMySQLの動作に戸惑っている最中ですね? しかもHAVING句のやっかいさに...。 私もそうでした。苦笑 HAVING句はグループ化された結果に対してさらに条件で絞り込みを行える便利な命令ですが、ちょっとした癖があります。 それは「テーブル名指定をエラーとして認識してしまうこと」です。

検索エンジンのランキングアルゴリズムをMySQLで真似てみる

今回はMySQLを使って、GoogleやYahooなどがやっている「ランキング」を出す方法を例に、SQL文で異なるカラムのデータを合算して比較するやり方を書いていきます。

MySQLで期間限定のデータを取得するSQL文を書いてみよう

MySQLでWebアプリケーションを構築する場合に、たまにやりたいことの1つに「登録日から○○日はお試し期間です」といったような「期間限定」機能がありますね。 今回はこの期間限定をSQLでどう書くかを書いていきたいと思います。

MySQLの絶対値計算ABS()で異常な数値になる理由

DB上にある数値データを、持っている数値と比較して絶対値を測る場合にABS()を利用しますが、結果で「184467440737...」といった異常な数値が出てしまう事例を取り上げます。

郵便番号データベースにindexを付けても検索が遅い理由

MySQLで実験していて気づいた罠ですが、郵便番号データベースを自前で持っている場合に知っておくと良いTIPSです。

DATETIME型からTIMESTAMP型へPHPで変換する関数

PHPでMySQLから取得したDATETIME型の日付文字列を、時間の計算などに使えるTIMESTAMP(タイムスタンプ)型に変換するための関数です。

MySQLの無限ループを停止させる方法

開発中にうっかりやってしまいがちなミスが無限ループのSQLコマンドを発行してしまうことです。 もしMySQL自体を停止させようとしている人はちょっと待って!

MySQLと画像ファイルのトランザクション問題を考える

画像データを外部ファイルで持つのと、データベースに格納しておくのとでは、どちらが良いのでしょうか? なかなか難しい問題です。 今回は画像ファイルを外部に持つことのメリット・デメリットを考え、落とし所を探っていくことにしましょう。

MySQLでmysqldumpを実行すると'ujius'という意味不明のエラー

未だにMySQLで文字コードをEUC-JPにして運用されているところも多いかと思いますが、文字コードを「ujis」にしているとデータベースデータをファイルに書き出す「mysqldump」コマンドにおいて奇妙な現象が起こってしまいました。

phpMyAdminをハッキングしている記録と対策方法

サーバーのアクセスログを監視していて、phpMyAdminに対して攻撃(ハッキング)用のアクセスが見つかったので、公開しておきます。

1  2