小编Rup*_*per的帖子

获取表不存在错误,但表确实存在(ActiveRecord :: StatementInvalid Mysql2 :: Error:Table不存在)

当我尝试访问其中一个页面时出现以下错误

ActiveRecord :: StatementInvalid(Mysql2 ::错误:表'p478r679_partybot.secretsanta'不存在:显示来自'secretsanta'的信息):app/controllers/secretsantas_controller.rb:7:in`index'

但是这个表存在于我的数据库中.

为了给你一个问题的背景,几年前我写了这个应用程序,直到最近才开始工作.当我尝试使用瘦服务器启动应用程序时,出现以下错误

您已经激活了机架1.4.3,但您的Gemfile需要机架1.2.1.使用bundle exec可以解决这个问题.(宝石:: LoadError)

所以我从托管服务处寻求技术支持以寻求帮助.他们说,

"问题是rails版本与bundler版本不兼容.现在我们已将rails版本更改为"3.1.10"并已安装捆绑器"1.2.3".现在您的网站正在加载正常."瘦"服务在您的服务器中启动.端口正在侦听应用程序.请参阅下面给出的详细信息."

他们已经更新了我的所有宝石以使其正常运行.我最初使用的是Rails 3.0.1和瘦1.2.7.现在我有Rails 3.1.10和瘦1.5.1.现在应用程序正在加载,除Secretsanta外,所有功能都在运行.

当我仔细查看错误信息的以下部分时,"显示来自秘密的信息"我看到表名是"secretsanta",它应该是"secretsanta s "吗?

我不知道该怎么做,毕竟应用程序在过去的3年里工作正常,我不知道为什么它在更新宝石后不起作用

以下是Secretsanta模型用户模型和SecretsantasController的一些代码片段.

Secretsanta.rb

   class Secretsanta < ActiveRecord::Base
     belongs_to :user
     belongs_to :gift_receiver, :class_name => "User"
     ...
Run Code Online (Sandbox Code Playgroud)

User.rb

    class User < ActiveRecord::Base

      # Setup accessible (or protected) attributes for your model
      attr_accessible :first_name, :last_name, :email,
                      :password, :password_confirmation, :remember_me

      validates :first_name, :presence => true
      validates :last_name, :presence => true
      validate :should_be_invited

      # Include default devise modules. Others available are:
      # :token_authenticatable, :confirmable, :lockable and :timeoutable …
Run Code Online (Sandbox Code Playgroud)

ruby mysql activerecord ruby-on-rails ruby-on-rails-3

10
推荐指数
1
解决办法
9697
查看次数