couchbase / couchbase-ruby-model

The Active Model implementation for Couchbase Server built on couchbase-ruby-client
61 stars 23 forks source link

Mysql2::Error: Can't find file error raised #23

Open sunku opened 10 years ago

sunku commented 10 years ago

Hello.

I just installed 'couchbase 1.3.3' and 'couchbase-model 0.5.3' gem on my Rails app (3.2.16) today. When I start my rails app, I see this error below.

/Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:245:in `query': Mysql2::Error: Can't find file: './mydb/onetable.frm' (errno: 13): SHOW FULL FIELDS FROM `onetable` (ActiveRecord::StatementInvalid)
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:245:in `block in execute'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:245:in `execute'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/connection_adapters/mysql2_adapter.rb:213:in `execute'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:259:in `execute_and_free'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:426:in `columns'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/connection_adapters/schema_cache.rb:12:in `block in initialize'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/model_schema.rb:229:in `yield'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/model_schema.rb:229:in `default'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/model_schema.rb:229:in `columns'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/model_schema.rb:238:in `columns_hash'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/locking/optimistic.rb:131:in `locking_enabled?'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/relation.rb:170:in `exec_queries'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/relation.rb:160:in `block in to_a'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/explain.rb:41:in `logging_query_plan'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/relation.rb:159:in `to_a'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.16/lib/active_record/relation/finder_methods.rb:159:in `all'
    from /Users/me/Dev/Projects/App/MyRailsApp/app/models/onetable.rb:25:in `<class:ImageQualityType>'
    from /Users/me/Dev/Projects/App/MyRailsApp/app/models/onetable.rb:15:in `<top (required)>'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/dependencies.rb:469:in `load'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/dependencies.rb:469:in `block in load_file'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/dependencies.rb:639:in `new_constants_in'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/dependencies.rb:468:in `load_file'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/dependencies.rb:353:in `require_or_load'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/dependencies.rb:313:in `depend_on'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/dependencies.rb:225:in `require_dependency'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/couchbase-model-0.5.3/lib/couchbase/railtie.rb:116:in `block (4 levels) in <class:Railtie>'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/couchbase-model-0.5.3/lib/couchbase/railtie.rb:115:in `each'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/couchbase-model-0.5.3/lib/couchbase/railtie.rb:115:in `block (3 levels) in <class:Railtie>'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/couchbase-model-0.5.3/lib/couchbase/railtie.rb:114:in `each'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/couchbase-model-0.5.3/lib/couchbase/railtie.rb:114:in `block (2 levels) in <class:Railtie>'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:429:in `_run__1552831612745726444__prepare__1164779790096791275__callbacks'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:405:in `__run_callback'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:385:in `_run_prepare_callbacks'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:81:in `run_callbacks'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/actionpack-3.2.16/lib/action_dispatch/middleware/reloader.rb:74:in `prepare!'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/actionpack-3.2.16/lib/action_dispatch/middleware/reloader.rb:48:in `prepare!'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/application/finisher.rb:47:in `block in <module:Finisher>'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/initializable.rb:30:in `instance_exec'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/initializable.rb:30:in `run'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/initializable.rb:54:in `each'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/initializable.rb:54:in `run_initializers'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/application.rb:136:in `initialize!'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /Users/me/Dev/Projects/App/MyRailsApp/config/environment.rb:9:in `<top (required)>'
    from /Users/me/Dev/Projects/App/MyRailsApp/config.ru:3:in `require'
    from /Users/me/Dev/Projects/App/MyRailsApp/config.ru:3:in `block in <main>'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/rack-1.4.5/lib/rack/builder.rb:51:in `instance_eval'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/rack-1.4.5/lib/rack/builder.rb:51:in `initialize'
    from /Users/me/Dev/Projects/App/MyRailsApp/config.ru:in `new'
    from /Users/me/Dev/Projects/App/MyRailsApp/config.ru:in `<main>'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/rack-1.4.5/lib/rack/builder.rb:40:in `eval'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/rack-1.4.5/lib/rack/builder.rb:40:in `parse_file'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/rack-1.4.5/lib/rack/server.rb:200:in `app'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/commands/server.rb:46:in `app'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/rack-1.4.5/lib/rack/server.rb:304:in `wrapped_app'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/rack-1.4.5/lib/rack/server.rb:254:in `start'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/commands/server.rb:70:in `start'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/commands.rb:55:in `block in <top (required)>'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/commands.rb:50:in `tap'
    from /Users/me/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.16/lib/rails/commands.rb:50:in `<top (required)>'
    from script/rails:6:in `require'

My Rails app already uses mysql gem with ActiveRecord, but I haven't seen this error before. I just figured out that this error only raised when I use 'couchbase-model' gem.

Does anyone see this error?

Thank you!

avsej commented 10 years ago

I think it caused because couchbase model touch every ruby file in this directory to check if it need to sync design document https://github.com/couchbase/couchbase-ruby-model/blob/1432c61c20ca2710d858d76d8309d57e25819824/lib/couchbase/railtie.rb#L115-L117

Could you trace the in which order couchbase-model loads its stuff and the mysql configuration. Probably by the time the railtie above is trying to load model class, the mysql connection isn't ready to accept requests.