*目次 [#u1aeacbf] #contents *参考情報 [#b3e191ac] -[[Rails2.3]] *データベース管理 [#ic424f66] **開発用データベースの作成 [#le8241ff] -mysqlの管理コマンドを使ってデータベースを作っても良いが、rakeコマンドで作ることもできる。 -rake db:create で config/database.ymlの設定に従ってデータベースを作ってくれる。当然database.ymlに記述されているユーザー、パスワードは正しいモノでないといけない。 rake db:create RAILS_ENV='development' ※以下のエラーがでる場合、database.ymlの「host: localhost」を「host: 127.0.0.1」に変更。mysql用ドライバのバグらしい。 #pre{{ Couldn't create database for {"reconnect"=>false, "encoding"=>"utf8", "username" =>"testuser", "adapter"=>"mysql", "database"=>"depot_development", "host"=>"loca lhost", "pool"=>5, "password"=>"testpassword"}, charset: utf8, collation: utf8_u nicode_ci (if you set the charset manually, make sure you have a matching collat ion) }} **テスト用データベースの作成 [#r76926a2] rake db:create RAILS_ENV='test' *テーブル管理 [#g01a6102] **migrationとは [#cdfa8ae5] -テーブルの作成やカラムの追加をruby scriptで行うことができるもの。 -バージョン管理が可能。 -テストデータの投入も可能。ただし2.3.4以降seeds.rbを使うのがベター? **migrationファイルを作る [#y9dd3dd7] ***単独のmigrationファイルを作る [#z1e08bba] ruby script/generate migration create_tables db/migrate/XXXXXXXXXXXXXXXX_create_tables.rbというファイルができているのでその中身を編集する。 ※ただしmodelやscaffoldと同時にmigrationファイルを作るのが普通らしい。 **migrationを最初からやりなおす [#lb50b985] -migrate:resetで可能 rake db:migrate:reset -VERSION=0に戻したあとで再度migrateを実行すれば同じか?(resetを使うほうが強力っぽい)。 rake db:migrate VERSION=0 rake db:migrate **カラムの操作 [#te6b0dad] ***カラムの型を変更する [#mc9eff51] db/migrate以下にできたひな形ファイルを編集する。 #pre{{ class ChangeImageColumn < ActiveRecord::Migration def self.up change_column :products, :icon, :string end def self.down change_column :products, :icon, :binary end end }} *データ管理 [#a9e4a7fd] **マスターデータの管理 [#se3eff1b] -[[Rails 2.3.4で追加されたseeds.rbについて - ひげろぐ:http://brass.to/blog/rails-2-3-4%E3%81%A7%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%81%9Fseeds-rb%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.html]]によると、seeds.rbを使ってマスターデータを投入するのがよさそう。 -db/seeds.rbの中には普通にrubyのコードを書けばよいのでrailsの機能を使ってINSERTできる。 #pre{{ Genre.delete_all Genre.create([ {:type => 1, :label => 'サッカー'}, {:type => 2, :label => '野球'}, ]) }} -以下のコマンドで実行する rake db:seed *トラブルシューティング [#ff1a58b0] ** Windowsで rake db:migrate がとてつもなく遅い [#o0f5ad01] 10分ぐらいかかる。原因不明。変なログファイルでもはき出しているのかと色々調べてみたがその形跡はなし。 **Mysql::Error: query: not connected: CREATE TABLE `schema_migrations` [#gc8ad3d4] -[[雑学 | ruby1.8.6(mswin332)+rails2.3.4+mysql5.1.37 でMySQLコネクションエラー:http://blog.caperu.secret.jp/?eid=1019832]]と同様の現象が発生。 -MySQLのクライアントライブラリ(DLL)がMySQL5.1に対応してないのが原因らしい。 -http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll をダウンロードし、ruby.exeと同じ位置に置く。