MySQL

DROP DATABASE が通らない

理由は分かりませんが、何かのタイミングで DROP DATABASE hoge;が通らなくなってしまい、次のようなエラーメッセージが表示されるようになりました。 Error dropping database (can't rmdir './hoge', errno: 66)困るので、データディレクトリを直接削除し…

Rails の database.yml で collation を指定する

定期的に引っかかるので備忘録として。検証には Rails 4.0.8 及び Mysql 5.6.10 を使用しました。Rails から MySQL を使う際、何も考えずにデフォルトのまま設定していくと、大体の場合小文字 a と大文字 A が区別されないデータベースが作成されます。具体…

Rails の Migration で MySQL の文字列型に BINARY 属性をつけるには

MySQL の文字列型が大文字と小文字を区別してくれない事をつい忘れてしまい、時々問題になるので備忘録を兼ねて。前述の通り MySQL では char や varchar さらに text 型と言った文字列型で大文字と小文字が区別されません。これを回避するにはカラムの作成…

Rails から MySQL に SSL を用いて通信を行う

ActiveRecord には SSL によるデータベースアクセスをサポートする機能が付属しているので、それを使って通信を暗号化してみます。検証には VirtualBox にインストールした CentOS 5.6 を使用し、作業はすべて root ユーザで行いました。 前提 mysql と open…

CentOS5.6 で MySQL+Nginx+Unicorn な Rails アプリを動かす

完全に自分用の備忘録。VirtualBox にインストールした CentOS5.6 に表題の環境を構築してサーバを動かすまで。 サーバのメモリは512Mでパーティションは40Gと、(記事執筆時では)一般的な低価格帯 VPS を意識したスペックに調整してあります。 また、すべ…

Rails3.0 で MySQL のストアドプロシージャを呼び出してみる

ストアドプロシージャにまつわる諸々は MySQL のマニュアル等をご参照のこと。ここでは SQL レベルのお話にとどめます。 MySQL 側でストアドプロシージャを用意する 今回はきわめて簡単な SELECT 文をストアドプロシージャとして定義します。 CREATE PROCEDU…

MacPorts から MySQL5 をインストール、設定

自分で作業するときのメモ。毎度引っかかるので。 インストール ここは素直に、サーバ込みでインストールするだけ。 sudo port install mysql5-server 設定 まずは初期化。 sudo -u mysql /opt/local/bin/mysql_install_db5ここで root でログインしたいので…

delete_all と destroy_all について

諸事情で Rails 1.1.6 を使っているため、最近の事情には合致しないかもしれませんが、以下のような違いがありました。データベースには MySQL を使っています。items と users が多対多の関係で、中間テーブルに item_users を用いているとします。高速化の…

MySQL の IN の記述

MySQL で WHERE 句に IN を指定するとき、以下のような挙動を起こします。 select * from table where id in (1,2,3); この場合、(存在する限り、以下同様)id が 1, 2, 3 のレコードが取得されます。 select * from table where id in ("1","2","3"); この…