小编Tha*_*anh的帖子

Redis引发错误:NOAUTH需要身份验证,但没有密码设置

当我通过命令连接到Redis服务器时,我收到错误NOAUTH身份验证:redis-cli并运行ping以检查Redis是否正常工作.

我找到了NOAUTH Authentication required错误的答案,该错误描述了只有当Redis设置了密码时才会发生此错误,但我检查了Redis配置文件,etc/redis/redis.conf并且没有设置密码.

Redis配置

有没有人知道,如果有其他设置可以导致此错误?谢谢你的帮助.

p/s:我使用的是Ruby on Rails Web框架,Redis数据库用于Sidekiq.

编辑:Redis版本是2.8.4.服务器托管在AWS上.

目前,我决定为Redis服务器设置一个密码,以便在运行时无法设置密码.

(重新启动Redis服务器时,它将正常工作.您可以运行sudo service redis-server restart以重新启动Redis服务器.)

ruby-on-rails redis sidekiq ruby-on-rails-4

33
推荐指数
4
解决办法
3万
查看次数

如何重命名列并通过迁移同时更改其类型

在我的general_exams表中,我有一个名为的列semester,类型是string.现在我想将其名称更改为semester_id,type is integer.我已阅读有关迁移的信息,它有可用的转换:

  • rename_column(table_name,column_name,new_column_name):重命名列但保留类型和内容.
  • change_column(table_name,column_name,type,options):使用与add_column相同的参数将列更改为其他类型.

所以,我创建了这样的迁移文件:

class RenameSemesterFromGeneralExams < ActiveRecord::Migration

  def change
    rename_column :general_exams, :semester, :semester_id
    change_column :general_exams, :semester_id, :integer
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,当我跑rake db:migrate,它有错误:

==  RenameSemesterFromGeneralExams: migrating =================================
-- rename_column(:general_exams, :semester, :semester_id)
   -> 0.0572s
-- change_column(:general_exams, :semester_id, :integer)
rake aborted!
An error has occurred, this and all later migrations canceled:

PG::Error: ERROR:  column "semester_id" cannot be cast to type integer
: ALTER TABLE "general_exams" ALTER COLUMN "semester_id" TYPE integer …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-3

21
推荐指数
2
解决办法
1万
查看次数

如何搜索和排序数据但在sql中排除前缀单词

我正在使用Ruby on Rails和pg_search gem在我的项目中使用PostgreSQL数据库进行全文搜索功能.目前,我有一个列表医院,名称如下:

Hospital A
Hospital C
Hospital D
Hospital B A
Run Code Online (Sandbox Code Playgroud)

当我进行搜索时,我希望这个单词Hospital不会影响返回的结果,结果可以不带Hospital前缀排序.

例如,如果我Hospital在查询字段中输入,将没有返回的结果,但如果我输入A,Hospital A并且Hospital B A将是结果,那么结果可以按字母顺序排序而不包含Hospital前缀单词以成为列表:

Hospital A
Hospital B A
Run Code Online (Sandbox Code Playgroud)

我搜索了这个并找到了这个答案:高级MySQL按字母顺序排序前缀?,但答案使用的视图,我不知道如何在Rails中做到这一点.

我不确定pg_search gem是否支持SUBSTRING,因为我在其github上找不到关于它的文档.有谁知道Postgres是否具备做这种工作的功能?

谢谢你的帮助.

更新:我最终使用一列来存储此前缀单词,以便我可以搜索内容并从查询中排除该单词并返回预期结果.对于遇到此问题的任何人,请考虑并尝试我的解决方案,如果它可以拯救你.

sql postgresql ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

7
推荐指数
1
解决办法
388
查看次数

删除'未提交的更改的更改'中的文件

这是我的git状态:

# On branch create-views-question
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    solr/data/development/index/_0.fdt
#   deleted:    solr/data/development/index/_0.fdx
#   deleted:    solr/data/development/index/_0.fnm
#   deleted:    solr/data/development/index/_0.frq
...
Run Code Online (Sandbox Code Playgroud)

目前,我曾经git rm一个接一个地删除文件,还有另一种方式,所以我可以同时删除它们吗?

git

4
推荐指数
2
解决办法
9652
查看次数

为什么Rails在创建新记录时在SQL查询中生成BINARY

我有模型项目和位置.

这是我的Item模型的迁移文件:

class CreateItems < ActiveRecord::Migration
  def change
    create_table :items do |t|
      t.string :item_cd
      t.string :item_name

      t.integer :location_id
      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我使用form_tag创建一个表单来创建新项目.但是当我创建新Item时,Rails会生成如下SQL:

Location Load (0.3ms)  SELECT `locations`.* FROM `locations` WHERE `locations`.`location_cd` = 'jp' LIMIT 1
  Item Load (0.2ms)  SELECT `items`.* FROM `items` WHERE `items`.`item_cd` = '6' LIMIT 1
   (0.1ms)  BEGIN
  Item Exists (0.2ms)  SELECT 1 FROM `items` WHERE `items`.`item_cd` = BINARY '6' LIMIT 1
  SQL (0.6ms)  INSERT INTO `items` (`created_at`, `item_cd`, `item_name`, `location_id`, `updated_at`) VALUES ('2013-04-17 03:26:42', '6', 'Glasses', …
Run Code Online (Sandbox Code Playgroud)

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

4
推荐指数
1
解决办法
1203
查看次数

当列具有类型datetime时,如何在表单上显示本地时间以UTC格式保存在数据库中

我有一个名为的列test_date,输入datetimeGeneral Exam表.我在表单上构建了一个表单来创建和更新GeneralExam,我允许用户选择一个日期和时间jQuery UI Datepicker.

用户选择日期和时间后,它将显示在文本字段中,如:

25-11-2012 16:30

这是我现在的时间.当我在控制台中运行时,我看到test_date保存在数据库中的是:

2012-11-25 09:30:00

当我获得对象GeneralExam并获得test_date价值时,它是:

g = GeneralExam.last
g.test_date
=> Sun, 25 Nov 2012 16:30:00 ICT +07:00
Run Code Online (Sandbox Code Playgroud)

我认为test_date是转换,因为我设置的application.rb是:

config.time_zone = 'Hanoi'
Run Code Online (Sandbox Code Playgroud)

但是当我在表单上更新常规考试时,它仍然显示时间保存在数据库中,而不是我的本地时区,这意味着它显示:

2012-11-25 09:30:00

但我希望它就像我在表单上选择的那样:

25-11-2012 16:30:00

如何在本地时间设置显示日期时间列?

而且我认为日期的顺序是相反的,当我选择日期时,它是25-11-2012,但是当它显示它时2012-11-25,为什么它颠倒了顺序?

ruby-on-rails ruby-on-rails-3

3
推荐指数
1
解决办法
2663
查看次数

使用Prawn添加图像,得到错误:Prawn :: Errors :: UnsupportedImageType,PNG使用不支持的交错方法

我用Prawn创建了pdf文件,我想将徽标放在文件中.我查看了这个网站创建pdf以引用如何添加图像.

这是我ExamResultPdf.rb生成pdf的文件代码:

  def initialize(exam, view)
    super(top_margin: 70)
    @exam = exam
    exam_number # line 9, I removed codes are not relevant
  end

  def exam_number
    logo_path = "#{Rails.root}/app/assets/images/logo_hoasen.png"
    image logo_path, height: 200, width: 200
    text "Examination Result \##{@exam.id}", size: 30, style: :bold
  end
Run Code Online (Sandbox Code Playgroud)

但是当我去页面时/result.pdf,它有错误:

Prawn::Errors::UnsupportedImageType in ExamsController#result
PNG uses unsupported interlace method

# Trace
app/pdfs/exam_result_pdf.rb:18:in `exam_number'
app/pdfs/exam_result_pdf.rb:9:in `initialize'
app/controllers/exams_controller.rb:43:in `new'
app/controllers/exams_controller.rb:43:in `block (2 levels) in result'
app/controllers/exams_controller.rb:40:in `result'
Run Code Online (Sandbox Code Playgroud)

我的exams_controller:

def result
    @exam = Exam.find(params[:id]) …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails prawn ruby-on-rails-3

3
推荐指数
1
解决办法
4125
查看次数

为什么我在运行回调after_save时得到错误堆栈级别太深

我有2个型号:

  • GeneralExam有很多TopicQuestion
  • TopicQuestion属于GeneralExam,belongs_to主题

这是两个模型中的列:

  • GeneralExam:名称,描述,number_question
  • 主题问题:general_exam_id,topic_id,number_question

我想通过加上TopicQuestion中每个主题的number_question来计算一般考试的总问题数.所以我写了一个像这样的方法:

class GeneralExam < ActiveRecord::Base

  has_many :topic_questions, dependent: :destroy

  validates :number_question, numericality: { only_integer: true, greater_than: 0 }, on: :save

  after_save :calc_number_question

  private

  def calc_number_question
    number_question = 0
    self.topic_questions.each do  |tq|
      number_question += tq.number_question
    end
    self.number_question = number_question
    self.save
  end
end
Run Code Online (Sandbox Code Playgroud)

但是当我提交时,我收到错误:

SystemStackError in GeneralExamsController#create
stack level too deep
Run Code Online (Sandbox Code Playgroud)

这是我的参数:

{"utf8"=>"?",
 "authenticity_token"=>"VyojDMOltc5wOJMDf4gtDM6lEk6soTZl/EaY9qrCRyY=",
 "general_exam"=>{"course_id"=>"1",
 "name"=>"dada",
 "description"=>"dada",
 "semester_id"=>"1",
 "duration"=>"1",
 "topic_questions_attributes"=>{"0"=>{"_destroy"=>"false",
 "topic_id"=>"15",
 "number_question"=>"15"},
 "1"=>{"_destroy"=>"false",
 "topic_id"=>"13",
 "number_question"=>"6"},
 "2"=>{"_destroy"=>"false",
 "topic_id"=>"Choose a topic",
 "number_question"=>""},
 "3"=>{"_destroy"=>"false",
 "topic_id"=>"Choose a topic",
 "number_question"=>""},
 "4"=>{"_destroy"=>"false", …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-3

0
推荐指数
1
解决办法
2247
查看次数