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... ]