0
我想解析一個sqlite3數據庫在rails 3中(使用sqlite3-ruby gem)。要解析的數據庫來自文件上傳。這裏是我的控制器代碼:生產(Engineyard)SQLite3 :: NotADatabaseException(文件被加密或不是數據庫)
require 'fileutils'
require 'sqlite3'
tmp = params[:file_upload][:my_file]
file = params[:file_upload][:my_file].tempfile
filename = params[:file_upload][:my_file].original_filename
file = File.join("public", params[:file_upload][:my_file].original_filename)
FileUtils.cp tmp.path, filename
db = SQLite3::Database.new(filename)
所以它的工作原理相當不錯,在當地,而不是在生產(與EngineYard的)。我收到以下錯誤:
SQLite3::NotADatabaseException (file is encrypted or is not a database)
我不明白爲什麼。任何幫助將非常感激,因爲我真的不知道如何解決這個問題。
感謝
通常這意味着文件是使用WAL模式創建的,並且您的sqlite模塊太舊了。 – schlenk
我不熟悉WAL模式,但實際上我看到上傳sqlite3文件時在我的臨時目錄中創建了WAL文件。我正在使用以下寶石:sqlite3(1.3.6)和sqlite3-ruby(1.3.3) – mathieurip
有關WAL的詳細信息,請參閱http://www.sqlite.org/draft/wal.html。 – schlenk