Ruby on Rails 3 Tips

RailsからMySQLのテーブルを作成するには

Railsのマイグレート機能には、カラム属性としてbinaryがあるのですが、これを指定してもMySQL上ではBLOBというカラム属性になります。

構文としては
create_table :user_photos do |t|
  t.string :name
  t.binary :photo_image
end
もっと大容量のLONGBLOBが欲しい!

という時 ...

Lift, Scala

Scala + Liftの環境は、最初はH2DBにつながるようになっている。

一般的にサービスを提供する場合、やはりMySQLなどに繋いで使いたい

ということで、MySQLに接続する方法

Mavenでプロジェクトを作っている前提で

pom.xmlファイルのdependenciesに以下を追加

<dependency>
<groupId>mysql</groupId>
<ar ...

MySQL, ubuntu

UbuntuはパッケージでMySQLを入れるとすぐに起動しますが

外部からの接続が出来ないように設定されています。

/etc/mysql/my.cnf

このファイルの中に

という行があります。

これは、IPが127.0.0.1からの接続しか受け付けないですよ、という設定で

127.0.0.1は自分自身のことなので、そのマシンの中からしかつなぐことが出来ません。

この設定行をコメントアウトすることで、そ ...

MySQL

MySQLのデフォルトのキャラセットをUTF-8にセットする

Linuxの場合

/etcにmy.cnfか、/etc/mysqlにmy.cnfがあるので、それを開く

の下に

を追記

の下にも

を追記

2012年09月13日追記
※MySQL5.5からはで使用するキャラセットの設定はdefault-character-setではなく
character-set-s

MySQL

MySQLで巨大なSQLを送信したときに

「Got a packet bigger than ‘max_allowed_packet’ bytes」

というエラーが出る。

これは、MySQLサーバの設定で「max_allowed_packet」があり、ここで指定したサイズよりも大きいパケットを送信したときに出るエラーのようだ。

解決方法としてはmy.cnfののところに

といった感じで大きいサイズを指定 ...

MySQL, SQL

MySQL で ビットマスク を扱う

MySQL, SQL

先ほど、仕事でなぜか違うデータが抽出されるんだけど…という不具合を報告され

よくよく調査したら、

という条件を見つけた。

前任者は、2001_1001_202_100とか、2001_1001_202_の後にコードが付いたデータを抽出したかったのであろうが

この条件だと2001_1001_2023というデータもヒットしてしまう。

これは、likeでは「_」は任意の一文字を意味する記号であるからである。

仕方が無いの ...

MySQL, SQL

MySQLにはmysqldumpというダンプツールがあるが、CSVファイルでデータを出力できると、加工もしやすい。

また、CSV出力時には基本、SQL構文での出力となるため、条件指定も容易になる。

書き方としては

FIELDSオプション

TERMINATED BY
項目の区切り文字を指定する
ENCLOSED BY
項目を囲む文字(たとえばダブルクォーテーション)
ESCAPED BY
エスケープする文字を ...

MySQL, SQL

MySQLでユーザを削除する手順

権限を削除

REVOKEで、削除したいユーザの権限を削除する

REVOKE構文について

参考に、guestユーザの権限を削除する実際の構文は

ユーザを削除