DBのデータ型を調査
ということで、タイトルにあるように調べてみることにした。
Railsの開発環境
・Windows7
・Rails 3.2.6
・Ruby 1.9.3p 194
DBの接続確認を行うには「Rails Console」にて以下のコマンドを実施する。
print ActiveRecord::Base.connection.native_database_types
今回調査したのは、 MySQL、PostgreSQL、Oracle だったりします。
苦労したのはOracle、こいつは一筋縄じゃいかなかった。
ってことで忘れないようにメモしておくよ!
■ MySQL
DB名 :Mysql 5.5.24
コネクタ :Mysql2
{:primary_key=>"int(11) DEFAULT NULL auto_increment PRIMARY KEY",
:string=>{:name=>"varchar", :limit=>255},
:text=>{:name=>"text"},
:integer=>{:name=>"int", :limit=>4},
:float=>{:name=>"float"},
:decimal=>{:name=>"decimal"},
:datetime=>{:name=>"datetime"},
:timestamp=>{:name=>"datetime"},
:time=>{:name=>"time"},
:date=>{:name=>"date"},
:binary=>{:name=>"blob"},
:boolean=>{:name=>"tinyint", :limit=>1}}
DB名 :PostgreSQL 9.1
コネクタ名 :postgres-pr
{:primary_key=>"serial primary key",
:string=>{:name=>"character varying", :limit=>255},
:text=>{:name=>"text"},
:integer=>{:name=>"integer"},
:float=>{:name=>"float"},
:decimal=>{:name=>"decimal"},
:datetime=>{:name=>"timestamp"},
:timestamp=>{:name=>"timestamp"},
:time=>{:name=>"time"},
:date=>{:name=>"date"},
:binary=>{:name=>"bytea"},
:boolean=>{:name=>"boolean"},
:xml=>{:name=>"xml"},
:tsvector=>{:name=>"tsvector"}}
■ Oracle
DB名 :Oracle 11g EX
コネクタ :activerecord-oracle_enhanced-adapter
{:primary_key=>"NUMBER(38) NOT NULL PRIMARY KEY",
:string=>{:name=>"VARCHAR2", :limit=>255},
:text=>{:name=>"CLOB"},
:integer=>{:name=>"NUMBER", :limit=>38},
:float=>{:name=>"NUMBER"},
:decimal=>{:name=>"DECIMAL"},
:datetime=>{:name=>"DATE"},
:timestamp=>{:name=>"TIMESTAMP"},
:time=>{:name=>"DATE"},
:date=>{:name=>"DATE"},
:binary=>{:name=>"BLOB"},
:boolean=>{:name=>"NUMBER", :limit=>1},
:raw=>{:name=>"RAW", :limit=>2000}}
※ 注意点:初期段階のコネクタは使用不可となっているため oracle_enhanced を使用する必要がある。
GemはGemFileに以下を記入し、アダプターをダウンロードする。
gem 'activerecord-oracle_enhanced-adapter', :git => 'git://github.com/rsim/oracle-enhanced.git'
RailsでOracleを使用するためには、以下のファイルを順にインストールする必要がある。
Oracle XE版、Instant Client、ruby-oci8(Oracleに接続出来る様にする rubyインターフェース)
ネックとなるのはこいつだ!「ruby-oci8」
ちなみに以下から入手可能。
http://rubyforge.org/projects/ruby-oci8/
インストール方法は、以下を参考にしたよ!
http://ruby-oci8.rubyforge.org/ja/InstallForInstantClient.html
、、、参考にしたかったんだけど「nmake」でフリーズ。
nmake は以下をインストールするといいよ!とのこと
※注意:64bit向けであり、Windows7用じゃないのでいい方法とはいえません!
以下のサイトから、PSDK-amd64.exe をダウンロード
http://www.microsoft.com/en-us/download/details.aspx?id=6510
インストール後、ファイルパスへ以下を追加
C:\Program Files\Microsoft Platform SDK\Bin
コマンドプロンプトを立ち上げて以下を入力すると色々出てくれば準備OK!
nmake /?
あとは上記インストール方法を参考にインストールすれば大丈夫!
プロジェクト上の設定は、、、
new プロジェクト名 -d oracle で出来た。
database.yml のadapterを oracle → oracle_enhancedにする。
以下、、、殴り書き(いつか直したいな、、、)
繋がらなければ、、、
C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN
tnsnames.ora を疑え!(Windows7の場合はUACマジックに掛かるから対処法をいかに記述)
tnsnames.oraを設定しておけば、database.yml の database は XE を設定すると幸せになれるよ!(初期値)
※普通にDBの設定を書けば普通に繋がるんだけどね(汗
■ UACマジック対処法
コンパネ→ユーザアカウント→ユーザアカウント制御設定の変更→再起動