RailsでDB2を扱う場合の注意点などをまとめたメモです。
導入方法
確認環境
ibm_db (3.0.3)
activerecord (4.2.6)
マイグレーションの注意点
・マイグレーションでVARGRAPHIC型のカラムを追加するには「vargraphic」を指定
・マイグレーションで「integer」を指定するとlimit指定に係わらずINTEGER型となる
・マイグレーションで「boolean」を指定するとSMALLINT型となる
※SMALLINT型を読み込むとboolean型として扱われる
数値を取得したい場合はカラム名の後ろに「_before_type_cast」をつける
class Sample < ActiveRecord::Migration
def change
create_table :sample do |t|
t.string :test1, limit: 20 # =>VARCHAR
t.vargraphic :test2, limit: 20 # =>VARGRAPHIC
t.integer :test3, limit: 1 # =>INTEGER
t.integer :test4, limit: 4 # =>INTEGER
t.integer :test5, limit: 8 # =>INTEGER
t.boolean :test6 # =>SMALLINT
end
end
end
・「bundle exec rake db:migrate:reset」はサポートされていない
その他注意点
・ハングアップすることがある?
複雑なSQLで構文エラーがあった時にRailsがハングアップすることがある。
to_sqlでSQLを取得し、find_by_sqlで直接実行すればハングアップせずに例外が発生する
・TIMESTAMP型が文字列で取得されることがある?
TIMESTAMP型が文字列で取得されることがあった。
Active Recordのselectメソッドを使用しないようにすると時刻型で取得された。