ActiveRecord :: StatementInvalid(SQLite3 :: BusyException:数据库被锁定

时间:2018-03-18 19:43:32

标签: sql ruby-on-rails ruby sqlite rubygems

我知道这是一个重复的问题,但我尝试了所有其他解决方案对我不起作用。 当我创建新消息时,它不会在第一次单击时插入它,在第二次单击时它会插入相同的消息两次,如果我在第一次单击后查看终端我

ActiveRecord::StatementInvalid (SQLite3::BusyException: database is locked: INSERT INTO "notifications" ("content", "user_id", "created_at", "updated_at") VALUES (?, ?, ?, ?)):
ActiveRecord::StatementInvalid (SQLite3::BusyException: database is locked: commit transaction): 

我试过的解决方案

ActiveRecord::Base.connection.execute("BEGIN TRANSACTION; END;") 

我的文件属性未知:B。

bundle exec rake db:reset

它清除了我的所有数据,但我仍然得到了相同的结果。

default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 10000 

我试图增加超时但它对我不起作用。

应用程序/控制器/ messages_controller.rb

class MessagesController < ApplicationController
     before_action :authenticate_user!
     before_action :set_conversation

def index
    if current_user == @conversation.sender || current_user == @conversation.recipient
    @other = current_user == @conversation.sender ? @conversation.recipient : @conversation.sender
    @messages = @conversation.messages.order("created_at DESC")
    else
  redirect_to conversations_path, alert: "You don't have permission to view this."
    end
end
def create
   @message = @conversation.messages.new(message_params)
   @messages = @conversation.messages.order("created_at DESC")

if @message.save
   ActionCable.server.broadcast "conversation_#{@conversation.id}", message: render_message(@message)
   redirect_to conversation_messages_path(@conversation)
  end
end
private
  def render_message(message)
  self.render(partial: 'messages/message', locals: {message: message})
end
def set_conversation
  @conversation = Conversation.find(params[:conversation_id])
end
def message_params
  params.require(:message).permit(:context, :user_id)
 end
end

This is an image from the terminal

0 个答案:

没有答案