Я получаю следующее сообщение об ошибке при попытке получить доступ к одной из моих страницПолучение Таблица не существует ошибка, но таблица существует (ActiveRecord :: StatementInvalid mysql2 :: Ошибка: Таблица не существует)
ActiveRecord::StatementInvalid (Mysql2::Error: Table 'p478r679_partybot.secretsanta' doesn't exist: SHOW FIELDS FROM 'secretsanta'): app/controllers/secretsantas_controller.rb:7:in `index'
Но эта таблица существует в моей БД.
Как раз для того чтобы дать вам предпосылки моей проблемы, я написал это приложение несколько лет назад, и до недавнего времени он работал нормально. Когда я попытался запустить приложение с тонким сервером, я получил следующее сообщение об ошибке
You have already activated rack 1.4.3, but your Gemfile requires rack 1.2.1. Using bundle exec may solve this. (Gem::LoadError)
Так я приблизился к техподдержку моего хостинга для помощи. Они сказали:
“The problem was that the rails version was not compatible with the bundler version. Now we have changed the rails version to "3.1.10" and have installed the bundler "1.2.3 ". Now your website is loading fine.The "thin" service is started in your server. The port is listening to the application. Refer the details given below.”
И они обновили все мои драгоценные камни, чтобы заставить его работать. Первоначально я использовал Rails 3.0.1 и тонкий 1.2.7. Теперь у меня есть Rails 3.1.10 и тонкий 1.5.1. Теперь приложение загружается, и все функции работают, кроме Secretsanta.
Когда я смотрю на следующую часть сообщения об ошибке, «SHOW FIELDS FROM secretsanta» Я вижу, что имя таблицы «secretsanta», должно ли оно быть «secretsanta s»?
Я не уверен, что сделать это, в конце концов приложение работает отлично в течение последних 3-х лет, и я не знаю, почему он не работает после обновления драгоценных камней
Вот некоторый код надрез в тайный санта модель User Model и SecretsantasController.
Secretsanta.rb
class Secretsanta < ActiveRecord::Base
belongs_to :user
belongs_to :gift_receiver, :class_name => "User"
...
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
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_one :potluck
has_one :secretsanta
has_one :gift_receiver, :through => :secretsanta
has_many :secretsantaExclutions
has_many :excluded, :through => :secretsantaExclutions
has_many :discussions
has_many :comments
...
secretsantas_controller.rb
class SecretsantasController < ApplicationController
before_filter :authenticate_user!
def index
@exclutionList = SecretsantaExclution.find_all_by_user_id(current_user.id)
@event = Event.find_by_id(4)
@rsvp = GuestList.find_by_guest(current_user.email)
@secretsanta = Secretsanta.find_by_user_id(current_user.id) #i am getting the error at this line
end
Пожалуйста, дайте мне знать, если вам нужно, и дополнительную информацию. Заранее благодарю за вашу помощь
да, имя таблицы в БД «secretsantas» – Ruper
Спасибо, Натан Хайд, он работает после установки имени таблицы, как вы предложили. Любая догадка о том, как она работает до обновления версии gem? я люблю это знать – Ruper