0

这个问题与在执行任何数据库操作之前在 Rails 中从 sqlite 切换到 mysql 相关,同时遵循 Ruby on Rails 教程(第 2 版)。

在使用 Ruby on Rails 教程(第 2 版)进行任何数据库操作之前,我将 config/database.yml 中的数据库参数切换为使用 mysql。在第 7.1.3 节之前,一切都在工作。至此,users表已创建完毕,示例用户已成功添加到表中。但是,当我去测试显示用户页面时,users/1我收到以下错误消息。使用 mysql 数据库而不是 sqlite 时,还有什么需要做的吗?预先感谢您的任何支持!

错误:

ActiveRecord::StatementInvalid in UsersController#show

Could not find table 'users'

完整跟踪:

activerecord (3.2.11) lib/active_record/connection_adapters/sqlite_adapter.rb:472:in `table_structure'
activerecord (3.2.11) lib/active_record/connection_adapters/sqlite_adapter.rb:346:in `columns'
activerecord (3.2.11) lib/active_record/connection_adapters/schema_cache.rb:12:in `block in initialize'
activerecord (3.2.11) lib/active_record/model_schema.rb:228:in `yield'
activerecord (3.2.11) lib/active_record/model_schema.rb:228:in `default'
activerecord (3.2.11) lib/active_record/model_schema.rb:228:in `columns'
activerecord (3.2.11) lib/active_record/model_schema.rb:237:in `columns_hash'
activerecord (3.2.11) lib/active_record/relation/delegation.rb:7:in `columns_hash'
activerecord (3.2.11) lib/active_record/relation/finder_methods.rb:331:in `find_one'
activerecord (3.2.11) lib/active_record/relation/finder_methods.rb:312:in `find_with_ids'
activerecord (3.2.11) lib/active_record/relation/finder_methods.rb:107:in `find'
activerecord (3.2.11) lib/active_record/querying.rb:5:in `find'
app/controllers/users_controller.rb:4:in `show'
actionpack (3.2.11) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.2.11) lib/abstract_controller/base.rb:167:in `process_action'
actionpack (3.2.11) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (3.2.11) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.2.11) lib/active_support/callbacks.rb:414:in `_run__1973165003296325481__process_action__197160741547540830__callbacks'
activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.11) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.2.11) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.2.11) lib/active_support/notifications.rb:123:in `block in instrument'
activesupport (3.2.11) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (3.2.11) lib/active_support/notifications.rb:123:in `instrument'
actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.2.11) lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
activerecord (3.2.11) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (3.2.11) lib/abstract_controller/base.rb:121:in `process'
actionpack (3.2.11) lib/abstract_controller/rendering.rb:45:in `process'
actionpack (3.2.11) lib/action_controller/metal.rb:203:in `dispatch'
actionpack (3.2.11) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.2.11) lib/action_controller/metal.rb:246:in `block in action'
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `call'
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:36:in `call'
journey (1.0.4) lib/journey/router.rb:68:in `block in call'
journey (1.0.4) lib/journey/router.rb:56:in `each'
journey (1.0.4) lib/journey/router.rb:56:in `call'
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:601:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
rack (1.4.5) lib/rack/etag.rb:23:in `call'
rack (1.4.5) lib/rack/conditionalget.rb:25:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/flash.rb:242:in `call'
rack (1.4.5) lib/rack/session/abstract/id.rb:210:in `context'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/cookies.rb:341:in `call'
activerecord (3.2.11) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.11) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `_run__2423197318852707609__call__2019361553739003282__callbacks'
activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/reloader.rb:65:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app'
railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call'
activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged'
railties (3.2.11) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.5) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.5) lib/rack/lock.rb:15:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call'
railties (3.2.11) lib/rails/engine.rb:479:in `call'
railties (3.2.11) lib/rails/application.rb:223:in `call'
rack (1.4.5) lib/rack/content_length.rb:14:in `call'
rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service'
/opt/bitnami/ruby/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/opt/bitnami/ruby/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/opt/bitnami/ruby/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
4

1 回答 1

1

从您提供的堆栈跟踪来看,您的应用似乎没有指向您的 mysql 数据库。

activerecord (3.2.11) lib/active_record/connection_adapters/sqlite_adapter.rb:472:intable_structure'` <--指向 sqlite_adapter 而不是 mysql 适配器

确保您使用mysql2gem 并且不要忘记bundle install在修改 gemfile 后运行。还要确保在修改 database.yml 文件后重新启动服务器。

于 2013-04-04T20:17:01.770 回答