Ruby on rails 获得;SQLite3::CorruptException:数据库磁盘映像格式不正确;从rails控制台

Ruby on rails 获得;SQLite3::CorruptException:数据库磁盘映像格式不正确;从rails控制台,ruby-on-rails,database,sqlite,ruby-on-rails-3.2,Ruby On Rails,Database,Sqlite,Ruby On Rails 3.2,我正在学习MichaelHartl的rails屏幕播放教程,在第7章中,为了测试用户显示页面,我试图向数据库添加一个用户。当我创建一个用户时,它会被回滚,并出现一个SQLite3::CorruptException:数据库磁盘映像格式错误错误。对这个错误的研究建议停止“postfix”进程,但我没有安装postfix。有什么想法吗?请注意,我是新手,这很可能是我的一个简单错误!谢谢 1.9.3p194 :009 > user = User.create(name: "dax", email

我正在学习MichaelHartl的rails屏幕播放教程,在第7章中,为了测试用户显示页面,我试图向数据库添加一个用户。当我创建一个用户时,它会被回滚,并出现一个SQLite3::CorruptException:数据库磁盘映像格式错误错误。对这个错误的研究建议停止“postfix”进程,但我没有安装postfix。有什么想法吗?请注意,我是新手,这很可能是我的一个简单错误!谢谢

1.9.3p194 :009 > user = User.create(name: "dax", email: "poo@foo.bar", password: "lala", password_confirmation: "lala")
(0.1ms)  SAVEPOINT active_record_1
User Exists (0.2ms)  SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER('poo@foo.bar') LIMIT 1
SQL (0.6ms)  INSERT INTO "users" ("created_at", "email", "encrypted_password", "name", "salt", "updated_at") VALUES (?, ?, ?, ?, ?, ?)  [["created_at", Thu, 14 Mar 2013 18:29:58     UTC +00:00], ["email", "poo@foo.bar"], ["encrypted_password", "68beb4b809ab79efd7fcbd175a58d7938d595f360df82b85f8f73e209abe6327"], ["name", "dax"], ["salt", "da4687fa5f380d0b1087810fdccfe96fddd4abab4409c2d96adf7c14f6c4b77b"], ["updated_at", Thu, 14 Mar 2013 18:29:58 UTC +00:00]]
(0.1ms)  ROLLBACK TO SAVEPOINT active_record_1
ActiveRecord::StatementInvalid: SQLite3::CorruptException: database disk image is malformed: INSERT INTO "users" ("created_at", "email", "encrypted_password", "name", "salt", "updated_at") VALUES (?, ?, ?, ?, ?, ?)
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/sqlite3-1.3.7/lib/sqlite3/statement.rb:108:in `step'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/sqlite3-1.3.7/lib/sqlite3/statement.rb:108:in `block in each'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/sqlite3-1.3.7/lib/sqlite3/statement.rb:107:in `loop'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/sqlite3-1.3.7/lib/sqlite3/statement.rb:107:in `each'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:263:in `to_a'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:263:in `block in exec_query'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.12/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:242:in `exec_query'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/database_statements.rb:63:in `exec_insert'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/database_statements.rb:90:in `insert'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/query_cache.rb:14:in `insert'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/relation.rb:66:in `insert'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/persistence.rb:367:in `create'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/timestamp.rb:58:in `create'
... 15 levels...
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/attribute_methods/dirty.rb:22:in `save'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/transactions.rb:259:in `block (2 levels) in save'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/transactions.rb:313:in `block in with_transaction_returning_status'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/transactions.rb:208:in `transaction'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/transactions.rb:311:in `with_transaction_returning_status'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/transactions.rb:259:in `block in save'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/transactions.rb:270:in `rollback_active_record_state!'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/transactions.rb:258:in `save'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/persistence.rb:45:in `create'
from (irb):9
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.12/lib/rails/commands/console.rb:47:in `start'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.12/lib/rails/commands/console.rb:8:in `start'
from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.12/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'1.9.3p194 :010 >`
1.9.3p194:009>用户=用户。创建(名称:“dax”,电子邮件:poo@foo.bar,密码:“拉拉”,密码确认:“拉拉”)
(0.1ms)保存点活动\u记录\u 1
用户存在(0.2ms)从“用户”中选择1,其中较低(“用户”。“电子邮件”)=较低('poo@foo.bar“)限制1
SQL(0.6ms)插入“用户”(“创建时间”、“电子邮件”、“加密密码”、“名称”、“salt”、“更新时间”)值(?、、、、、、、?)[[“创建时间”,2013年3月14日星期四18:29:58 UTC+00:00],“电子邮件”poo@foo.bar“],[“加密密码”,“68beb4b809ab79efd7fcbd175a58d7938d595f360df82b85f8f73e209abe6327”],[“名称”,“dax”],[“salt”,“DA4687FA5F380D0B1087810FDCCFE96FDDD4AB4409C2D96ADF7C14F6C4B77B”],[“更新时间”,2013年3月14日星期四18:29:58 UTC+00:00]]
(0.1ms)回滚到保存点活动\u记录\u 1
ActiveRecord::StatementInvalid:SQLite3::CorruptException:数据库磁盘映像格式不正确:插入“用户”(“创建时间”、“电子邮件”、“加密密码”、“名称”、“salt”、“更新时间”)值(?,,,,,,,?)
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/sqlite3-1.3.7/lib/sqlite3/statement.rb:108:在“步骤”中
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/sqlite3-1.3.7/lib/sqlite3/statement.rb:108:in`block in each'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/sqlite3-1.3.7/lib/sqlite3/statement.rb:107:in'loop'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/sqlite3-1.3.7/lib/sqlite3/statement.rb:107:in'each'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/connection\u adapters/sqlite\u adapter.rb:263:in`to\u a'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/connection\u adapters/sqlite\u adapter.rb:263:in`block in exec\u query'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/connection\u adapters/abstract\u adapter.rb:280:in“block in log”
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.12/lib/active\u support/notifications/instrumenter.rb:20:in'instrument'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/connection\u adapters/abstract\u adapter.rb:275:in'log'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/connection\u adapters/sqlite\u adapter.rb:242:in'exec\u query'
来自/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/connection\u adapters/abstract/database\u语句。rb:63:in'exec\u insert'
来自/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/connection\u adapters/abstract/database\u语句。rb:90:in'insert'
来自/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/connection\u adapters/abstract/query\u cache.rb:14:in'insert'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/relation.rb:66:in'insert'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/persistence.rb:367:in“create”中
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/timestamp.rb:58:in“create”中
…15级。。。
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/attribute\u methods/dirty.rb:22:在“保存”中
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/transactions.rb:259:in“保存中的块(两级)”中
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/transactions.rb:313:in `块入,事务返回\u状态'
来自/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/connection\u adapters/abstract/database\u语句。rb:192:在“事务”中
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/transactions.rb:208:in“transaction”
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/transactions.rb:311:in`with\u transaction\u returning\u status'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/transactions.rb:259:in“保存中的块”
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/transactions.rb:270:处于“回滚活动记录”状态
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active_record/transactions.rb:258:in'save'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.12/lib/active\u record/persistence.rb:45:在“创建”中
来自(irb):9
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.12/lib/rails/commands/console.rb:47:in'start'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.12/lib/rails/commands/console.rb:8:in'start'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.12/lib/rails/commands.rb:41:in`'
来自脚本/rails:6:in'require'
从脚本/rails:6:in`'1.9.3p194:010>`

听起来数据库已经损坏。您可以使用以下命令从头开始:

rake db:drop
rake db:create
rake db:migrate

对我来说,没有任何效果。我删除了所有*.sqlite3文件,然后运行

rake db:create
rake db:migrate

然后它成功了。

谢谢,成功了!不幸的是,我不能给你投票,因为我的声誉不高。如果你遵循rails教程,你可能还需要运行:rake db:populateBe carefull,此过程删除并新建数据库,其中的所有数据都将丢失。