簡體   English   中英

Rails SQLite3 :: SQLException

[英]Rails SQLite3::SQLException

我是Rails框架的新手,並且關注Michael Hartl的教程。 我目前遇到的錯誤如下: 在此處輸入圖片說明

首先,我看到它no such column: users.remember_token但是為什么? 因為我運行以下代碼:

$ bundle exec rake db:migrate
$ bundle exec rake test:prepare

在此之前,我有一個包含內容的文件:

class AddRememberTokenToUsers < ActiveRecord::Migration
  def change
    add_column :users, :remember_token, :string
    add_index  :users, :remember_token
  end
end

我懷疑這是我的db/development.sqlite3來自我的原因,因為我實際上沒有看到remember_token列。 但是我的假設是在運行$ bundle exec rake db:migrate我應該看到新列了嗎? 這是development.sqlite3樣子:

在此處輸入圖片說明

我還有一個SessionsHelper文件,如下所示:

module SessionsHelper

  def sign_in(user)
    remember_token = User.new_remember_token
    cookies.permanent[:remember_token] = remember_token
    user.update_attribute(:remember_token, User.encrypt(remember_token))
    self.current_user = user
  end

  def signed_in?
    !current_user.nil?
  end

  def current_user=(user)
    @current_user = user
  end

  def current_user
    remember_token = User.encrypt(cookies[:remember_token])
    @current_user ||= User.find_by(remember_token: remember_token)
  end
end

Per Andre: rake db:drop db:create rake db:migrate 警告:這會清除您的所有數據。

我個人:閱讀您的schema_migrations表,看看db:migrate是否認為它應該運行您的遷移...

@Phlip的答案對我有用。 當您的數據庫中已有用戶時,“ remember_token”遷移將無法進行。 您必須清除日期記錄,然后執行db:migrate。

我遇到了同樣的問題。 這個問題的復本。 即使按照接受的答案中的說明進行操作,即使遷移文件位於db / migrate中,我也無法將“ remember_token”列添加到數據庫中。 我打開了實際的遷移文件,發現其中沒有包含所需的所有內容。 我的遷移文件如下所示:

class AddRememberTokenToUsers < ActiveRecord::Migration
end

當需要這樣時:

class AddRememberTokenToUsers < ActiveRecord::Migration
  def change
add_column :users, :remember_token, :string
  add_index  :users, :remember_token
  end
end

添加丟失的代碼,保存后,再執行db:migrate,我又恢復了業務! 如果有人遇到相同問題,只想將其留在這里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM