[前][次][番号順一覧][スレッド一覧]

rails:865

From: emori <m.karibe@g...>
Date: Tue, 10 Jan 2006 15:08:05 +0900
Subject: [rails:865] clone_structure_to_testについて

はじめまして。emori と申します。

rake clone_structure_to_test コマンドについて
質問があります。

mysqlでのテーブル作成時に、
DATA DIRECTORY、INDEX DIRECTORYのオプションを
使用してテーブルを作成し、rake test_unitsを実行すると、
INDEXファイルが見つからないというエラーが発生します。

rake clone_structure_to_test コマンドでは、
データディレクトリを指定して作成したテーブルを
testデータベースにcopyできないのでしょうか?

何か方法などをご存知でしたら、アドバイスお願いいたします。


以下、確認した手順を記述します。

1. DATA DIRECTORY、INDEX DIRECTORYを指定してテーブルを作成。
    CREATE TABLE `users` (
      `id` smallint(6) NOT NULL default '0'
      `name` varchar(10) default NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=ujis
     DATA DIRECTORY='/usr/data/db/'
    INDEX DIRECTORY='/usr/data/db/'

    すると、/usr/data/db/ に、INDEXファイル(users.MYI)、
    データファイル(users.MYD)が作成されます。

    mysqlのdatadir(show variables コマンドで参照)の
    データベース名のディレクトリには、
    データディレクトリへのシンボリックリンクが作成されます。
      t.MYD -> /usr/data/db/t.MYD
      t.MYI ->  /usr/data/db/t.MYI

2. scaffold でmodel, controller, viewを作成。
    ruby/generate scaffold user user

3. rake test_unitsを実行。
    以下のエラーが出力。
--------------------------------------------------------------------------------
  1) Error:
test_truth(UserTest):
ActiveRecord::StatementInvalid: MysqlError: 'users.MYI' ファイルを見付ける事がで
きません.(errno: 2): DELETE FROM users
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection
_adapters/abstract_adapter.rb:88:in `log'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection
_adapters/mysql_adapter.rb:180:in `execute'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection
_adapters/mysql_adapter.rb:195:in `delete'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.r
b:279:in `delete_existing_fixtures'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.r
b:252:in `create_fixtures'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.r
b:252:in `each'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.r
b:252:in `create_fixtures'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.r
b:251:in `transaction'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.r
b:251:in `create_fixtures'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.r
b:244:in `silence'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.r
b:244:in `create_fixtures'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.r
b:540:in `load_fixtures'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.r
b:487:in `setup'

  2) Error:
test_truth(UserTest):
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.-
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/transactio
ns.rb:112:in `unlock_mutex'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.r
b:509:in `teardown'

1 tests, 0 assertions, 0 failures, 2 errors
rake aborted!
Command failed with status (1): [/usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby...]
--------------------------------------------------------------------------------


++++++++++++++++++++
emori
  m.karibe@g...
++++++++++++++++++++

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

->     865 2006-01-10 07:08 [m.karibe@g...       ] clone_structure_to_testについて         
       867 2006-01-10 09:57 ┗[moriq@m...          ]                                       
       871 2006-01-11 05:42  ┗[m.karibe@g...       ]