さくら専用サーバ上にてRailsアプリを動かそうとしています.

必要なパッケージは全てインストールしたのですが,dbを扱った場合[例:Sample.find(~)]はエラーが表示されてしまいます.
db関連はsqlite3を扱っているため,sqlite3関係に何か不具合があると思われます.

したがって,sqlite3本体,sqlite3-rubyのどちらか(両方)になりますが,どちらも何を持って正しくインストールされているのか(あるいは正常な状態なのか)が分かりません.

自分の考えられる範囲では,

gem sqlite3-ruby

でインストールされたファイルが正しく対象とするrubyのフォルダ下にあるので,(たぶん)sqlite3-rubyに問題はないと思っています.

なのでsqlite3本体となるのですが,これは標準で入っているため不具合が起きることはあまり考えられません.
強いて言うならruby,rails,gemのパスが/usr/local/binに対してsqlite3のパスは/usr/binであるので,これが影響しているのか?ぐらいです.
もしかしたらsqlite3-rubyがsqlite3にアクセスできていないのかもしれません.
何かこれらに関してアドバイスがありましたら,教えていただけますでしょうか?
よろしくお願いします.

回答の条件
  • 1人50回まで
  • 13歳以上
  • 登録:2010/04/28 20:15:36
  • 終了:2010/04/29 03:38:22

ベストアンサー

id:koriki-kozou No.6

koriki-kozou回答回数480ベストアンサー獲得回数792010/04/29 00:07:18

ポイント100pt

>エラー内容を提示したかった

Webページを表示したときのエラーメッセージでもよかった


>database disk image is malformed

エラー理由は「データベースのディスクイメージが正しくない」

Rails+SQLite3の問題ではなかった模様


>データベースファイルのパーミッションは全て‘r’になっていました.

rw に変更

アップロード失敗も考慮しバイナリーファイルとして再度アップロードしたほうがよい


今はここまで

次回回答はいつになるかわからない

id:j2kondo

dbのパーミッションをrwに変更しましたが,以前としてWebページには「We're sorry, but something went wrong.」しか表示されませんでした.

また,dbに問題があるということでサーバ上でdbを作成し,そのdbにアクセスしたrailsアプリを起動したところ無事に表示させることができました.

したがって使用するdbを確認したところEUC-JPでエンコードされていたので,UTF-8に強制変換したら無事開発アプリも正常に表示されました.

ありがとうございます!

2010/04/29 03:35:52

その他の回答(5件)

id:ko8820 No.1

ko8820回答回数1221ベストアンサー獲得回数692010/04/28 21:41:35

ポイント10pt

保存するデータベース(SQLite)の保存場所の指定は正しいですか?

DBファイルとしてファイルが必要ですが大丈夫でしょうか?

id:j2kondo

回答ありがとうございます.

指定場所は正しいです.dbファイルもあります.

ローカルサーバで一度正しく表示できたアプリをアップしているので,そこの問題は無いと思われます・・・

2010/04/28 21:57:59
id:louis1011 No.2

louis1011回答回数1ベストアンサー獲得回数02010/04/28 21:54:05

サーバの環境を教えてください。

id:j2kondo

回答ありがとうございます.

環境は以下の通りです.

バージョンは開発環境に合わせています

CentOS 5.4

Rails 2.3.5

gem 1.3.5

ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-linux]

sqlite3 3.3.6

rubyファイル:

/usr/local/lib/ruby/以下

rubyパス:

/usr/local/bin/ruby

railsパス:

/usr/local/bin/ruby

sqlite3パス:

/usr/bin/sqlite3

その他1:

phusion passengerにてapache上でrailsアプリを動かしています.

以下パスの参照設定

LoadModule passenger_module

/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.11/ext/apache2/mod_passenger.so

PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.11

PassengerRuby /usr/local/bin/ruby

その他2:

ネットで見つけたsqlite3-rubyの動作検証をしてみましたが正しく出来ているような気がします.

[root@localhost usr]# irb --prompt simple

>> require 'rubygems'

=> true

>> require 'sqlite3'

=> true (ここは,時々ですがsqlite3が見つからないと出ます・・・)

2010/04/28 22:09:02
id:koriki-kozou No.3

koriki-kozou回答回数480ベストアンサー獲得回数792010/04/28 22:23:40

エラー内容によっては詳細な対応が可能な場合もある

下記環境であるとすればパーミッションの見直しだけで直るかもしれない

http://cache.baidu.jp/jp?word=centos%2Crails%2Csqlite%3B3&url=ht...

id:j2kondo

回答ありがとうございます.

そうです!

URL先にある内容は以前投稿した記事なので(キャッシュで残っていたのですね),環境は全く同じです.

パーミッションとはどこのファイルの事でしょうか?

ちなみに以下のサイトの項目「sqlite3-ruby のインストール」で確認しているパーミッションは,どのファイルも‘r’になっていました.

http://blog.designrecipe.jp/2008/7/13/cent-os-5-2-ruby-on-rails

----------------

パーミッション情報:

[root@localhost ~]# cd /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3

[root@localhost sqlite3]# ll

total 76

  • rw-r--r-- 1 root root 1745 Apr 28 19:05 constants.rb
  • rw-r--r-- 1 root root 24774 Apr 28 19:05 database.rb

drwxr-xr-x 4 root root 4096 Apr 28 19:05 driver

  • rw-r--r-- 1 root root 2307 Apr 28 19:05 errors.rb
  • rw-r--r-- 1 root root 7480 Apr 28 19:05 pragmas.rb
  • rw-r--r-- 1 root root 5061 Apr 28 19:05 resultset.rb
  • rw-r--r-- 1 root root 6843 Apr 28 19:05 statement.rb
  • rw-r--r-- 1 root root 3738 Apr 28 19:05 translator.rb
  • rw-r--r-- 1 root root 1057 Apr 28 19:05 value.rb
  • rw-r--r-- 1 root root 153 Apr 28 19:05 version.rb
2010/04/28 22:38:35
id:koriki-kozou No.4

koriki-kozou回答回数480ベストアンサー獲得回数792010/04/28 22:52:32

>パーミッションとはどこのファイルの事でしょうか?

データベースファイルのパーミッション


>以前投稿した記事

質問文を元にしてキャッシュを探すなど造作も無いこと

残念ながら専用サーバの仕様は独自となるため想定が難しい

どうしてエラー内容を記述しないのかが謎


回答受付50回でも連休前で次はいつ回答するかわからない

会社から回答していたようなスキルの高い人々は来ない/見ない可能性も高い

ご自身の推理も必要だが出来る限り詳細な情報を一度に開示することをより考えるほうが解決への近道


以上コメント欄程度の内容を回答欄に記述したことは失礼

id:j2kondo

ご指摘ありがとうございます.

エラー内容を提示したかったのですがどこのログも記述されておらず載せることができませんでした.

しかし,ログのパーミッションを変更した結果,エラー内容を確認することができました.

以下がそのエラーログです.

Processing HelloController#index (for 122.21.220.44 at 2010-04-28 23:29:44) [GET]

SQLite3::CorruptException (database disk image is malformed):

/usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/errors.rb:62:in `check'

/usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/statement.rb:39:in `initialize'

/usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/database.rb:154:in `new'

/usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/database.rb:154:in `prepare'

/usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/database.rb:202:in `execute2'

/usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/pragmas.rb:217:in `table_info'

app/controllers/hello_controller.rb:5:in `index'

passenger (2.2.11) lib/phusion_passenger/rack/request_handler.rb:92:in `process_request'

passenger (2.2.11) lib/phusion_passenger/abstract_request_handler.rb:207:in `main_loop'

passenger (2.2.11) lib/phusion_passenger/railz/application_spawner.rb:418:in `start_request_handler'

passenger (2.2.11) lib/phusion_passenger/railz/application_spawner.rb:358:in `handle_spawn_application'

passenger (2.2.11) lib/phusion_passenger/utils.rb:184:in `safe_fork'

passenger (2.2.11) lib/phusion_passenger/railz/application_spawner.rb:354:in `handle_spawn_application'

passenger (2.2.11) lib/phusion_passenger/abstract_server.rb:352:in `__send__'

passenger (2.2.11) lib/phusion_passenger/abstract_server.rb:352:in `main_loop'

passenger (2.2.11) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'

passenger (2.2.11) lib/phusion_passenger/abstract_server.rb:163:in `start'

passenger (2.2.11) lib/phusion_passenger/railz/application_spawner.rb:213:in `start'

passenger (2.2.11) lib/phusion_passenger/spawn_manager.rb:262:in `spawn_rails_application'

passenger (2.2.11) lib/phusion_passenger/abstract_server_collection.rb:126:in `lookup_or_add'

passenger (2.2.11) lib/phusion_passenger/spawn_manager.rb:256:in `spawn_rails_application'

passenger (2.2.11) lib/phusion_passenger/abstract_server_collection.rb:80:in `synchronize'

passenger (2.2.11) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'

passenger (2.2.11) lib/phusion_passenger/spawn_manager.rb:255:in `spawn_rails_application'

passenger (2.2.11) lib/phusion_passenger/spawn_manager.rb:154:in `spawn_application'

passenger (2.2.11) lib/phusion_passenger/spawn_manager.rb:287:in `handle_spawn_application'

passenger (2.2.11) lib/phusion_passenger/abstract_server.rb:352:in `__send__'

passenger (2.2.11) lib/phusion_passenger/abstract_server.rb:352:in `main_loop'

passenger (2.2.11) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'

Rendering /var/www/html/uncer/public/500.html (500 Internal Server Error)


ちなみに

>データベースファイルのパーミッション

は全て‘r’になっていました.

2010/04/28 23:37:39
id:hanako393 No.5

hanako393回答回数1142ベストアンサー獲得回数872010/04/29 00:01:53

>指定場所は正しいです.dbファイルもあります

書き込み権限はありますか?

id:j2kondo

>書き込み権限はありますか?

ありませんでした.

パーミッションを変更して再度表示してみましたが,結果は同じでした・・・

原因は下の返信のようです.

2010/04/29 02:23:32
id:koriki-kozou No.6

koriki-kozou回答回数480ベストアンサー獲得回数792010/04/29 00:07:18ここでベストアンサー

ポイント100pt

>エラー内容を提示したかった

Webページを表示したときのエラーメッセージでもよかった


>database disk image is malformed

エラー理由は「データベースのディスクイメージが正しくない」

Rails+SQLite3の問題ではなかった模様


>データベースファイルのパーミッションは全て‘r’になっていました.

rw に変更

アップロード失敗も考慮しバイナリーファイルとして再度アップロードしたほうがよい


今はここまで

次回回答はいつになるかわからない

id:j2kondo

dbのパーミッションをrwに変更しましたが,以前としてWebページには「We're sorry, but something went wrong.」しか表示されませんでした.

また,dbに問題があるということでサーバ上でdbを作成し,そのdbにアクセスしたrailsアプリを起動したところ無事に表示させることができました.

したがって使用するdbを確認したところEUC-JPでエンコードされていたので,UTF-8に強制変換したら無事開発アプリも正常に表示されました.

ありがとうございます!

2010/04/29 03:35:52

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません