必要なパッケージは全てインストールしたのですが,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にアクセスできていないのかもしれません.
何かこれらに関してアドバイスがありましたら,教えていただけますでしょうか?
よろしくお願いします.
>エラー内容を提示したかった
Webページを表示したときのエラーメッセージでもよかった
>database disk image is malformed
エラー理由は「データベースのディスクイメージが正しくない」
Rails+SQLite3の問題ではなかった模様
>データベースファイルのパーミッションは全て‘r’になっていました.
rw に変更
アップロード失敗も考慮しバイナリーファイルとして再度アップロードしたほうがよい
今はここまで
次回回答はいつになるかわからない
保存するデータベース(SQLite)の保存場所の指定は正しいですか?
DBファイルとしてファイルが必要ですが大丈夫でしょうか?
回答ありがとうございます.
指定場所は正しいです.dbファイルもあります.
ローカルサーバで一度正しく表示できたアプリをアップしているので,そこの問題は無いと思われます・・・
サーバの環境を教えてください。
回答ありがとうございます.
環境は以下の通りです.
バージョンは開発環境に合わせています
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が見つからないと出ます・・・)
エラー内容によっては詳細な対応が可能な場合もある
下記環境であるとすればパーミッションの見直しだけで直るかもしれない
http://cache.baidu.jp/jp?word=centos%2Crails%2Csqlite%3B3&url=ht...
回答ありがとうございます.
そうです!
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
drwxr-xr-x 4 root root 4096 Apr 28 19:05 driver
>パーミッションとはどこのファイルの事でしょうか?
データベースファイルのパーミッション
>以前投稿した記事
質問文を元にしてキャッシュを探すなど造作も無いこと
残念ながら専用サーバの仕様は独自となるため想定が難しい
どうしてエラー内容を記述しないのかが謎
回答受付50回でも連休前で次はいつ回答するかわからない
会社から回答していたようなスキルの高い人々は来ない/見ない可能性も高い
ご自身の推理も必要だが出来る限り詳細な情報を一度に開示することをより考えるほうが解決への近道
以上コメント欄程度の内容を回答欄に記述したことは失礼
ご指摘ありがとうございます.
エラー内容を提示したかったのですがどこのログも記述されておらず載せることができませんでした.
しかし,ログのパーミッションを変更した結果,エラー内容を確認することができました.
以下がそのエラーログです.
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’になっていました.
>指定場所は正しいです.dbファイルもあります
書き込み権限はありますか?
>書き込み権限はありますか?
ありませんでした.
パーミッションを変更して再度表示してみましたが,結果は同じでした・・・
原因は下の返信のようです.
>エラー内容を提示したかった
Webページを表示したときのエラーメッセージでもよかった
>database disk image is malformed
エラー理由は「データベースのディスクイメージが正しくない」
Rails+SQLite3の問題ではなかった模様
>データベースファイルのパーミッションは全て‘r’になっていました.
rw に変更
アップロード失敗も考慮しバイナリーファイルとして再度アップロードしたほうがよい
今はここまで
次回回答はいつになるかわからない
dbのパーミッションをrwに変更しましたが,以前としてWebページには「We're sorry, but something went wrong.」しか表示されませんでした.
また,dbに問題があるということでサーバ上でdbを作成し,そのdbにアクセスしたrailsアプリを起動したところ無事に表示させることができました.
したがって使用するdbを確認したところEUC-JPでエンコードされていたので,UTF-8に強制変換したら無事開発アプリも正常に表示されました.
ありがとうございます!
dbのパーミッションをrwに変更しましたが,以前としてWebページには「We're sorry, but something went wrong.」しか表示されませんでした.
また,dbに問題があるということでサーバ上でdbを作成し,そのdbにアクセスしたrailsアプリを起動したところ無事に表示させることができました.
したがって使用するdbを確認したところEUC-JPでエンコードされていたので,UTF-8に強制変換したら無事開発アプリも正常に表示されました.
ありがとうございます!