PG :: InvalidParameterValue:错误:参数“ client_min_messages”的值无效:“ panic”

时间:2019-11-08 09:12:13

标签: ruby-on-rails ruby postgresql activerecord rubygems

rake db:create显示错误PG :: InvalidParameterValue:错误:参数“ client_min_messages”的值无效:“ panic” 提示:可用值:debug5,debug4,debug3,debug2,debug1,日志,通知,警告,错误。

安装软件包后,尝试运行rake db:create commond。 在config文件夹中创建的database.yml文件,请在下面找到:

development:
  adapter: postgresql
  encoding: utf8
  database: thor_development1
  username: postgres
  password:
  host: localhost

test:
  adapter: postgresql
  encoding: utf8
  database: thor_test1
  username: postgres
  password:
  host: localhost
PG::InvalidParameterValue: ERROR:  invalid value for parameter "client_min_messages": "panic"
HINT:  Available values: debug5, debug4, debug3, debug2, debug1, log, notice, warning, error.
: SET client_min_messages TO 'panic'
/Users/galaxy/.rvm/gems/ruby-2.1.2@folderName/gems/activerecord-4.1.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `async_exec'
/Users/galaxy/.rvm/gems/ruby-2.1.2@folderName/gems/activerecord-4.1.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `block in execute'
/Users/galaxy/.rvm/gems/ruby-2.1.2@folderName/gems/activerecord-4.1.6/lib/active_record/connection_adapters/abstract_adapter.rb:373:in `block in log'
/Users/galaxy/.rvm/gems/ruby-2.1.2@folderName/gems/activesupport-4.1.6/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/Users/galaxy/.rvm/gems/ruby-2.1.2@folderName/gems/activerecord-4.1.6/lib/active_record/connection_adapters/abstract_adapter.rb:367:in `log'
/Users/galaxy/.rvm/gems/ruby-2.1.2@folderName/gems/activerecord-4.1.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:127:in `execute'
/Users/galaxy/.rvm/gems/ruby-2.1.2@folderName/gems/activerecord-4.1.6/lib/active_record/connection_adapters/postgresql/schema_statements.rb:274:in `client_min_messages='
/Users/galaxy/.rvm/gems/ruby-2.1.2@folderName/gems/activerecord-4.1.6/lib/active_record/connection_adapters/postgresql_adapter.rb:634:in `set_standard_conforming_strings'
/Users/galaxy/.rvm/gems/ruby-2.1.2@folderName/gems/activerecord-4.1.6/lib/active_record/connection_adapters/postgresql_adapter.rb:914:in `configure_connection'
/Users/galaxy/.rvm/gems/ruby-2.1.2@folderName/gems/activerecord-4.1.6/lib/active_record/connection_adapters/postgresql_adapter.rb:895:in `connect'
/Users/galaxy/.rvm/gems/ruby-2.1.2@folderName/gems/activerecord-4.1.6/lib/active_record/connection_adapters/postgresql_adapter.rb:568:in `initialize'

尝试在macOS Catalina中安装

7 个答案:

答案 0 :(得分:3)

在 PostgreSQL 12 中,他们 disallowed the PANIC valueclient_min_messages,Rails 正在设置 since 2.3.14。这已在 Rails 4.2.5 中修复。

这样升级 Rails 就解决了这个问题。指向 more detailed report 的链接,物有所值。

答案 1 :(得分:1)

我遇到了完全相同的问题,最后我弄清楚了那是什么。我在gems文件夹中输入了“ panic”一词,并在ActiveRecord 4.2.2 gem的第313行中找到了一个匹配项。我用猴子修补了文件,将值更改为“ error”,然后我就可以继续执行db:create rake任务。即使我使用的是旧的特定版本,ActiveRecord gem或pg gem也似乎已更改,因为我能够在几周前运行db:create,但是现在已经不能这个hack。

TL; DR:

gem info pg

cd到安装文件夹(对我来说是〜/ .rvm / gems / ruby​​-2.3.0 / gems)

grep -ri 'panic' .

用“错误”或其他有效消息替换与pg相关的任何内容。

答案 2 :(得分:1)

为了使其与PostgreSQL 12版一起使用,我修补了PostgreSQLAdapter类,以用“警告”消息替换“紧急”消息。 请注意,如果您可以将activerecord gem升级到4.2.6或更高版本,则不需要此猴子补丁。我必须这样做,因为我的项目依赖于gem extend

activerecord-3.2.22.5

答案 3 :(得分:0)

我也面临着同样的问题。我使用的是Postgres 9.4.1,并已升级到最新版本(12.1)。由于版本更改,我遇到了这个问题。我回到了9.4.1。你也一样吗?

答案 4 :(得分:0)

我在Postgres 12.1中遇到了这个问题,我需要回滚到9.4并得到解决。

答案 5 :(得分:0)

.rvm/gems/ruby-2.3.3/gems/active_record-4.1.9/lib/active_record/connection_adapters/postgresql_adapter.rb文件中,将client_min_messages的值更改为panic以外的任何值。有效值可以是-debug5,debug4,debug3,debug2,debug1,log,notice,warning,error。

问题在于ActiveRecord中的Postgresql适配器的新版本,其中panic是新的,默认值和旧的Postgres版本不支持。

答案 6 :(得分:0)

我在旧 Rails 版本上遇到了 pg12 的两个问题。该文件修复了 ruby​​ 1.8 和 activerecord 3.0.3 的两个问题。我把它放在 config/initializers/postgresql_adapter_pg12.rb

require 'active_record/connection_adapters/postgresql_adapter'

class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
  def set_standard_conforming_strings
    old, self.client_min_messages = client_min_messages, 'warning'
    execute('SET standard_conforming_strings = on', 'SCHEMA') rescue nil
  ensure
    self.client_min_messages = old
  end

  def column_definitions(table_name) #:nodoc:
    query <<-end_sql
      SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull
        FROM pg_attribute a LEFT JOIN pg_attrdef d
          ON a.attrelid = d.adrelid AND a.attnum = d.adnum
       WHERE a.attrelid = '#{quote_table_name(table_name)}'::regclass
         AND a.attnum > 0 AND NOT a.attisdropped
       ORDER BY a.attnum
    end_sql
  end
end