【MongoDB】エラー対応時のメモ集 -v0.1

#0. 説明
~~エラーが出た時にメモっておく場所
同じようなエラーが出た際に参考になればいいかなと思う
エラーに新しい種類が増えた際にタグを追加する~~
*タグが5個しか付与できなかったのでMongoDB専用に変更*
どうやらメモ用に使うのは適していないようだ。

#1. mongoDB 起動時

##コンソールログ

```
*********************************************************************
 ERROR: dbpath (/data/db) does not exist.
 Create this directory or give existing directory in --dbpath.
 See http://dochub.mongodb.org/core/startingandstoppingmongo
*********************************************************************
```

##解決策

```
$ sudo mkdir /data/db
```

##コンソールログ

```
2014-08-01T09:10:08.272+0900 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
2014-08-01T09:10:08.272+0900 [initandlisten] dbexit: 
2014-08-01T09:10:08.272+0900 [initandlisten] shutdown: going to close listening sockets...
2014-08-01T09:10:08.272+0900 [initandlisten] shutdown: going to flush diaglog...
2014-08-01T09:10:08.272+0900 [initandlisten] shutdown: going to close sockets...
2014-08-01T09:10:08.272+0900 [initandlisten] shutdown: waiting for fs preallocator...
2014-08-01T09:10:08.272+0900 [initandlisten] shutdown: lock for final commit...
2014-08-01T09:10:08.272+0900 [initandlisten] shutdown: final commit...
2014-08-01T09:10:08.272+0900 [initandlisten] shutdown: closing all files...
2014-08-01T09:10:08.272+0900 [initandlisten] closeAllFiles() finished
2014-08-01T09:10:08.272+0900 [initandlisten] shutdown: removing fs lock...
2014-08-01T09:10:08.273+0900 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
2014-08-01T09:10:08.273+0900 [initandlisten] dbexit: really exiting now
```

##解決策

```
$ sudo mongod
```

#2. railsに入れた時

##Input command

```
$ rails g mongoid:config
```

##output log

```
/gems/mongo-1.3.1/lib/mongo/cursor.rb:419:in `construct_query_message': uninitialized constant BSON::ByteBuffer (NameError)
```

cursor.rbの419行目を見てみる

```cursor.rb
418     def construct_query_message
419       message = BSON::ByteBuffer.new
420       message.put_int(query_opts)
421       BSON::BSON_RUBY.serialize_cstr(message, "#{@db.name}.#{@collection.name}")
422       message.put_int(@skip)
423       message.put_int(@limit)
424       spec = query_contains_special_fields? ? construct_query_spec : @selector
425       message.put_binary(BSON::BSON_CODER.serialize(spec, false).to_s)
426       message.put_binary(BSON::BSON_CODER.serialize(@fields, false).to_s) if @fields
427       message
428     end
```

どうやらBSON::ByteBuffer.newで落ちているようですね
新しく作れないということは、既に存在している可能性がある、もしくはinitializerできないみたいなエラーでしょうか
あとは、バージョンの互換性などが気になります。

##解決策
* mongoidのバージョンを4系にすること
* bson,mongo,bson_extはGemfileに入っているか。それぞれのバージョンは適切か
* config/initializersに余計なファイルが入っていないか

無事、以下のログが吐かれれば成功となります。

```
create  config/mongoid.yml
```
#3. DBにinsertする時

##実装

```test_test_test.rb
test = test_test_test.new(:test => "test", :created => Time.now)
test.save
```

##コンソールログ

```
LoadError - Unable to autoload constant test_test_test, expected フォルダ名/test_test_test.rb to define it:
  activesupport (4.1.2) lib/active_support/dependencies.rb:481:in `load_missing_constant'
  activesupport (4.1.2) lib/active_support/dependencies.rb:180:in `const_missing'
  activesupport (4.1.2) lib/active_support/dependencies.rb:512:in `load_missing_constant'
  activesupport (4.1.2) lib/active_support/dependencies.rb:180:in `const_missing'
  app/controllers/nikkei_stock_average_controller.rb:29:in `scrapingPastNikkeiStockAverageValues'
  actionpack (4.1.2) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  actionpack (4.1.2) lib/abstract_controller/base.rb:189:in `process_action'
  actionpack (4.1.2) lib/action_controller/metal/rendering.rb:10:in `process_action'
  actionpack (4.1.2) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  activesupport (4.1.2) lib/active_support/callbacks.rb:113:in `call'
  activesupport (4.1.2) lib/active_support/callbacks.rb:229:in `block in halting'
  activesupport (4.1.2) lib/active_support/callbacks.rb:229:in `block in halting'
  activesupport (4.1.2) lib/active_support/callbacks.rb:166:in `block in halting'
  activesupport (4.1.2) lib/active_support/callbacks.rb:166:in `block in halting'
  activesupport (4.1.2) lib/active_support/callbacks.rb:166:in `block in halting'
  activesupport (4.1.2) lib/active_support/callbacks.rb:86:in `run_callbacks'
  actionpack (4.1.2) lib/abstract_controller/callbacks.rb:19:in `process_action'
  actionpack (4.1.2) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (4.1.2) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
  activesupport (4.1.2) lib/active_support/notifications.rb:159:in `block in instrument'
  activesupport (4.1.2) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.1.2) lib/active_support/notifications.rb:159:in `instrument'
  actionpack (4.1.2) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  actionpack (4.1.2) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
  activerecord (4.1.2) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  actionpack (4.1.2) lib/abstract_controller/base.rb:136:in `process'
  actionview (4.1.2) lib/action_view/rendering.rb:30:in `process'
  actionpack (4.1.2) lib/action_controller/metal.rb:196:in `dispatch'
  actionpack (4.1.2) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  actionpack (4.1.2) lib/action_controller/metal.rb:232:in `block in action'
  actionpack (4.1.2) lib/action_dispatch/routing/route_set.rb:82:in `dispatch'
  actionpack (4.1.2) lib/action_dispatch/routing/route_set.rb:50:in `call'
  actionpack (4.1.2) lib/action_dispatch/journey/router.rb:71:in `block in call'
  actionpack (4.1.2) lib/action_dispatch/journey/router.rb:59:in `call'
  actionpack (4.1.2) lib/action_dispatch/routing/route_set.rb:678:in `call'
  rack (1.5.2) lib/rack/etag.rb:23:in `call'
  rack (1.5.2) lib/rack/conditionalget.rb:25:in `call'
  rack (1.5.2) lib/rack/head.rb:11:in `call'
  actionpack (4.1.2) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.1.2) lib/action_dispatch/middleware/flash.rb:254:in `call'
  rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
  rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
  actionpack (4.1.2) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (4.1.2) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.1.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in `call'
  activerecord (4.1.2) lib/active_record/migration.rb:380:in `call'
  actionpack (4.1.2) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.1.2) lib/active_support/callbacks.rb:82:in `run_callbacks'
  actionpack (4.1.2) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.1.2) lib/action_dispatch/middleware/reloader.rb:73:in `call'
  actionpack (4.1.2) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
  better_errors (1.1.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
  better_errors (1.1.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
  better_errors (1.1.0) lib/better_errors/middleware.rb:56:in `call'
  actionpack (4.1.2) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  actionpack (4.1.2) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.1.2) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.1.2) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.1.2) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.1.2) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.1.2) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.1.2) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.1.2) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
  rack (1.5.2) lib/rack/runtime.rb:17:in `call'
  activesupport (4.1.2) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
  rack (1.5.2) lib/rack/lock.rb:17:in `call'
  actionpack (4.1.2) lib/action_dispatch/middleware/static.rb:64:in `call'
  rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
  railties (4.1.2) lib/rails/engine.rb:514:in `call'
  railties (4.1.2) lib/rails/application.rb:144:in `call'
  rack (1.5.2) lib/rack/lock.rb:17:in `call'
  rack (1.5.2) lib/rack/content_length.rb:14:in `call'
  rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
  /usr/local/Cellar/ruby/2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
  /usr/local/Cellar/ruby/2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
  /usr/local/Cellar/ruby/2.1.1/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'
```

##解決策

```test_test_test.rb
test = TestTestTest.new(:test => "test", :created => Time.now)
test.save
```

キャメルケースで書かなくてはならないらしい
*TODO 要調査(mongodbのソース読む)*